Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание. Функция pthread_rwlock_timedwrlock () при м еняет блокировку для обеспечения записи к объекту блокировки чтения-записи






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

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

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

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

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

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

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

Ошибки

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

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

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

[EDEADLK] вызываю щ ий поток уже удерживает объект блокировки по объекту,

адресуе м о м у пара м етро м rwlock;

[EINVAL] значение, заданное пара м етро м rwlock, не относится к инициализированно м у объекту блокировки чтения-записи, или значение abs_timeout, выраженное в наносекундах, меньше нуля либо больше или равно 1000 миллионам.

Эта функция не возвра щ ает код ошибки [EINTR].


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал