Параллельное и распределенное программирование на С++ (Хьюз, Хьюз) - страница 461

pthread_rwlock_destroy(),pthread_rwlock_rdlock(), pthread_rwlock_timedrdlock (), pthread_rwlock_timedwrlock (), pthread_rwlock_tryrdlock(),pthread_rwlock_unlock(), том Base Definitions cтaндapтaIEEEStd 1003.1-2001, .

Последовательность внесения изменений

Функции впервые реализованы в вылуске Issue 5.

Issue 6

Для согласования со стандарто м IEEE Std 1003.1j-2000 были внесены следующие изменения:

• В разделе «Синопсис» была из м енена м етка. Новал м етка THR означает, что расс м атривае м ые функции теперь являются частью опции Threads (ранее они от-

носились к опции Read-Write Locks стандарта IEEE Std 1003.1j-2000, а также считались частью дополнения XSI).

• Из раздела «Ошибки» удален абзац, посвященный описанию кода ошибки [EDEADLK] , возвращаемому функцией pthread_rwlock_trywrlock ().

• Был отредактирован раздел «С м отри также».

pthread_rwlock_unlock

Имя

pthread_rwlock_unlock— функция разблокирования объекта блокировки чтения-записи.

Синопсис

THR

#include

int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

Описание

Функция pthread_rwlock_unlock () используется для освобождения блокировки, удерживае м ой с по м о щ ью объекта блокировки чтения-записи, адресуе м ого параметро м rwlock. Результаты не определены, если объект блокировки чтения-записи, адресуе м ый пара м етро м rwlock, не удерживается вызывающим потоком.

Если эта функция вызывается, чтобы освободить блокировку для обеспечения чтения, и существуют другие блокировки чтения, удерживаемые в данный момент по этому объекту блокировки чтения-записи, то он (объект) останется в состоянии блокирования для обеспечения чтения. Если с помощью этой функции освобождается последняя блокировка для чтения по заданному объекту блокировки чтения-записи, то этот объект перейдет в разблокированное состояние и, соответственно, не будет иметь владельцев.

Если эта функция вызывается, чтобы освободить блокировку для обеспечения записи по заданному объекту блокировки чтения-записи, то этот объект перейдет в разблокированное состояние.

Если существуют потоки, заблокированные по этому объекту блокировки, то при его освобождении именно стратегия планирования определяет, какой поток (потоки) получит блокировку.

TPS Если потоки, ожидающие освобождения блокировки, выполняются в соответствии со стратегиями планирования SCHED_FIFO, SCHED_RR или SCHED_SPORADIC, то при поддержке опции Thread Execution Scheduling после освобождения этой блокировки потоки получат блокировку в порядке следования их приоритетов. Для потоков с одинаковыми приоритетами блокировки для записи имеют преимущество перед блокировками для чтения.