Установить блокировку чтения/записи для записи
#include <pthread.h>#include <time.h>int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock,const struct timespec *abs_timeout );
libc
Функция pthread_rwlock_timedwrlock() применяет блокировку записи к блокировке чтения-записи, на которую ссылается rwlock, как в pthread_rwlock_wrlock().
Однако, если блокировку нельзя получить, не дожидаясь, пока другие потоки разблокируют блокировку, это ожидание завершается по истечении указанного времени ожидания. Тайм-аут истекает, когда проходит абсолютное время, указанное в abs_timeout, измеряемое часами, на которых основаны тайм-ауты (т.е. когда значение этих часов равно или превышает abs_timeout), или если абсолютное время, указанное в abs_timeout на момент вызова уже прошло.
Время ожидания основано на часах CLOCK_REALTIME
.
Если блокировку чтения-записи можно заблокировать немедленно, допустимость параметра abs_timeout не проверяется, и функция не завершится с ошибкой по тайм-ауту.
Если сигнал, вызывающий выполнение обработчика сигнала, доставляется в поток, заблокированный блокировкой чтения-записи, посредством вызова pthread_rwlock_timedwrlock(), по возвращении из обработчика сигнала поток возобновляет ожидание блокировки, как если бы он не был прерван.
Вызывающий поток может заблокироваться, если во время выполнения вызова он удерживает блокировку записи на rwlock. Результаты не определены, если эта функция вызывается с неинициализированной блокировкой чтения-записи.
Нуль, если получена блокировка для записи объекта блокировки чтения-записи, на который ссылается rwlock, или номер ошибки, указывающий на ошибку.
POSIX 1003.1 Threads, Timeouts
pthread_rwlock_destroy(), pthread_rwlock_init(), pthread_rwlock_timedrdlock(), pthread_rwlock_trywrlock(), pthread_rwlock_tryrdlock(), pthread_rwlock_unlock(), pthread_rwlock_wrlock(), struct timespec
Предыдущий раздел: Описание API системной библиотеки