Книга: UNIX: взаимодействие процессов
8.2. Получение и сброс блокировки чтения-записи
8.2. Получение и сброс блокировки чтения-записи
Блокировка чтения-записи имеет тип pthread_rwlock_t. Если переменная этого типа является статической, она может быть проинициализирована присваиванием значения константы PTHREAD_RWLOCK_INITIALIZER.
Функция pthread_rwlock_rdlock позволяет заблокировать ресурс для чтения, причем вызвавший процесс будет заблокирован, если блокировка чтения-записи уже установлена записывающим процессом. Функция pthread_rwlock_wrlock позволяет заблокировать ресурс для записи, причем вызвавший процесс будет заблокирован, если блокировка чтения-записи уже установлена каким-либо другим процессом (считывающим или записывающим). Функция pthread_rwlock_unlock снимает блокировку любого типа (чтения или записи):
#include <pthread.h>
int pthread_rwlock_rdlock(pthread_rwlock_t *rwptr);
int pthread_rwlock_wrlock(pthread_rwlock_t *rwptr);
int pthread_rwlock_unlock(pthread_rwlock_t *rwptr );
/* Все функции возвращают 0 в случае успешного завершения, положительное значение Еххх – в случае ошибки */
Следующие две функции производят попытку заблокировать ресурс для чтения или записи, но если это невозможно, возвращают ошибку с кодом EBUSY, вместо того чтобы приостановить выполнение вызвавшего процесса:
#include <pthread.h>
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwptr);
int pthread_rwlock_trywrlock(pthread_rwlock_t *rwptr);
/* Обе функции возвращают 0 в случае успешного завершения, положительное значение Еххх – в случае ошибки */
- ГЛАВА 8 Блокировки чтения-записи
- Получение статистики
- 2. Пример создания базового отношения в записи на псевдокоде
- Получение помощи
- Получение помощи по работе с книгой и компакт-диском
- Получение помощи по Windows SharePoint Services 3.0
- 3 Учетные записи пользователей
- Получение доменного имени
- Как из-под учетной записи пользователя (без администраторских привилегий) включать и отключать оборудование и выполнять ...
- Как сбросить форматирование текста в Microsoft Word?
- 4.8. Получение прав root
- 10.6. Гостевые учетные записи