Параллельное и распределенное программирование на С++ - [240]
Последовательность внесения изменений
Функция впервые реализована в выпуске Issue 6, основание м послужил стандарт IEEEStd 1003.1j-2000.
pthread_rwlock_trywrlock, pthread_rwlock_wrlock
Имя
pthread_rwlock_trywrlock, pthread_rwlock_wrlock — функции, блокирующие объект блокировки чтения-записи для обеспечения записи.
Синопсис
THR
#include
int pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock);
int pthread_rwlock_wrlock (pthread_rwlock_t *rwlock);
Описание
Функция pthread_rwlock_trywrlock () при м еняет блокировку для обеспечения записи подобно функции pthread_rwlock_wrlock(), за исключением того, что эта функция завершится неудачно, если какой-нибудь поток в данный момент удерживает блокировку по объекту, адресуемому пара м етро м rwlock (для чтения или записи).
Функция pthread_rwlock_wrlock () при м еняет блокировку для обеспечения записи к объекту блокировки чтения-записи, адресуе м о м у пара м етро м rwlock. Вызываю щ ий поток получает блокировку для записи, если никакой другой поток (записываю щ ий или считываю щ ий) не удерживает этот объект блокировки. В противно м случае этот поток будет заблокирован до тех пор, пока он не с м ожет получить блокировку. Вызываю щ ий поток м ожет попасть в ловушку взаи м облокировки, если во вре м я вызова он удерживает блокировку чтения-записи (либо для записи, либо для чтения) по объекту, адресуе м о м у пара м етро м rwlock.
Реализации могут благоприятствовать записывающим потокам перед считывающими, чтобы избежать зависания записывающего потока. Результаты не определены, если Любая из этих функций вызывается с неинициализированным объектом блокировки чтения-записи. Если потоку, ожидающему блокировки для обеспечения записи, передается сигнал, то после его обработки поток возобновит ожидание освобождения блокировки, как если бы оно и не прерывалось.
Возвращаемые значения
Функция pthread_rwlock_trywrlock() возвра щ ает нулевое значение, если блокировка для записи по объекту блокировки чтения-записи, адресуе м о м у пара м етро м rwloc, предоставлена. В противно м случае возвра щ ается код ошибки, обозначаю щ ий ее характер.
При успешном завершении функция pthread_rwlock_wrlock () возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_rwlock_trywrlock () завершится неудачно, если:
[EBUSY] блокировка чтения-записи не м огла быть предоставлена для записи, поскольку заданный объект блокировки уже заблокирован для чтения или записи.
Функции pthread_rwlock_wrlock() и pthread_rwlock_trywrlock() м огут завершиться неудачно, если:
[EINVAL] значение, заданное пара м етро м rwlock, не относится к инициализированно м у объекту блокировки чтения-записи.
Функция pthread_rwlock_wrlock () м ожет завершиться неудачно, если:
[EDEADLK] теку щ ий поток уже удерживает объект блокировки чтения-записи для обеспечения записи или чтения.
Эти функции не возвра щ ают код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Как упо м иналось в то м е Base Definitions стандарта IEEE Std 1003.1-2001 (Section 3.285, Priority Inversion), приложения, которые используют эти функции, м огут подвергнуться инверсии приоритетов.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
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, не удерживается вызывающим потоком.
Если эта функция вызывается, чтобы освободить блокировку для обеспечения чтения, и существуют другие блокировки чтения, удерживаемые в данный момент по этому объекту блокировки чтения-записи, то он (объект) останется в состоянии блокирования для обеспечения чтения. Если с помощью этой функции освобождается последняя блокировка для чтения по заданному объекту блокировки чтения-записи, то этот объект перейдет в разблокированное состояние и, соответственно, не будет иметь владельцев.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.