Предоставить доступ по чтению всем потокам, которые его запрашивают
#include <pthread.h>int pthread_rwlock_rdlock( pthread_rwlock_t *rwl );
pthread_rwlock_t
, который требуется заблокировать для чтения.libc
Функция pthread_rwlock_rdlock() получает общую блокировку на блокировку чтения-записи rwl. Если блокировка чтения-записи уже заблокирована, вызывающий поток блокируется до тех пор, пока исключительная блокировка не будет снята.
![]() | Если другой поток в данный момент ожидает получения блокировки чтения-записи для записи, pthread_rwlock_rdlock() блокируется. Это может привести к взаимной блокировке, если поток пытается рекурсивно получить блокировку для чтения, в то время как другой поток пытается получить блокировку для записи. |
Если сигнал доставлен в поток, ожидающий блокировки блокировки чтения-записи, он возобновит ожидание блокировки после возврата из обработчика сигнала.
Поток может удерживать несколько блокировок чтения на одной и той же блокировке чтения-записи; он должен вызвать pthread_rwlock_unlock() несколько раз, чтобы снять блокировку чтения.
POSIX 1003.1 Threads
pthread_rwlock_destroy(), pthread_rwlock_init(), pthread_rwlock_tryrdlock(), pthread_rwlock_trywrlock(), pthread_rwlock_unlock(), pthread_rwlock_wrlock()
Предыдущий раздел: Описание API системной библиотеки