Вход/Регистрация
Параллельное и распределенное программирование на С++
вернуться

Хьюз Камерон

Шрифт:

• Раздел «Описание» был отредактирован следую щ и м образо м:

–  заданы условия, при которых записываю щ ие потоки и м еют преи м у щ ество перед считываю щ и м и;

–  разъяснена воз м ожная причина неудачного завершения функции pthread_rwlock_tryrdlock;

–  добавлен абзац, в которо м говорится о при м енении м акси м ального количество блокировок для обеспечения чтения.

• Был м одифицирован раздел «Ошибки», посвященный описанию кода ошибки [EBUSY] : теперь предлагается принять во внимание приоритет записывающих потоков. Удален абзац, посвященный описанию кода ошибки [EDEADLK] , возвращаемому функцией pthread_rwlock_tryrdlock .

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

Замечания по использованию

Как упо м иналось в то м е Base Definitions стандарта IEEE Std 1003.1-2001 (Se c tion 3.285, Priority Inversion), приложения, которые используют эти функции, м огут подвергнуться инверсии приоритетов.

pthread_rwlock_timedrdlock

Имя

pthread_rwlock_timedrdlock— функция, блокирующал объект блокировки чтения-записи для обеспечения чтения.

Синопсис

THR #include <pthread.h> TMO #include <time.h>

int pthread_rwlock_timedrdlock (

pthread_rwlock_t *restrict rwlock,

const struct timespec *restrict abs_timeout);

Описание

Функция pthread_rwlock_timedrdlock при м еняет блокировку для обеспечения чтения к объекту блокировки чтения-записи, адресуе м о м у пара м етро м rwlock, подобно функции pthread_rwlock_rdlock . Однако, если блокировка не может быть предоставлена без ожидания, пока другие потоки не освободят ее, это ожидание будет прервано, когда истечет заданный интервал времени. Интервал времени истекает, когда наступит абсолютное вре м я, заданное пара м етро м abs_timeout (т.е. когда показания вре м ени на используе м ых в систе м е часах станут равны м и или превысят значение abs_timeout), или если абсолютное вре м я, заданное пара м етро м abs_ timeou t, уже наступило в м о м ент вызова.

TMR Если по д держивается опция Timers, отсчет интервала вре м ени происходит с использование м часов CLOCK_REALTIME.

Если опция Timers не поддерживается, отсчет интервала времени происходит с использованием системных часов, значение которых возвращает функция time . Разрешение для интервала времени определяется разрешением часов, которые используются для его отсчета. Тип данных timespec определяется в заголовке <time.h>. Ни при каких условиях эта функция не завершится неудачно, если блокировка может быть предоставлена немедленно. В проверке достоверности параметра abs_timeout нет никакой необходи м ости, если блокировка м ожет быть предоставлена не м едленно.

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

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

Возвращаемое значение

Функция pthread_rwlock_timedrdlock возвра щ ает нулевое значение, если блокировка для чтения по объекту блокировки чтения-записи, адресуе м о м у пара м етро м rwloc, предоставлена. В противно м случае возвращается код ошибки, обозначающий ее характер.

Ошибки

Функция pthread_rwlock_timedrdlock завершится неудачно, если:

[ETIMEDOUT] блокировка не м огла быть предоставлена до истечения за д анного интервала вре м ени.

Функция pthread_rwlock_timedrdlock м ожет завершиться неу д ачно, если:

[EAGAIN] блокировка д ля чтения не м огла быть пре д оставлена, поскольку

превышено м акси м альное число блокировок чтения по объекгу, адресуемому пара м етро м rwlock

  • Читать дальше
  • 1
  • ...
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: