[EINVAL] процесс или поток заблокирован, а пара м етр abs_timeout в поле наносекунд и м еет значение, которое м еньше нуля либо больше или равно 1000 млн;
[ETIMEDOUT]мьютекс не удалось заблокировать до истечения заданного интервала времени.
Функция pthread_mutex_timedlock () может завершиться неудачно, если:
[EINVAL]значение, заданное пара м етро м mutex, не относится к инициализированному объекту мьютекса; XSI [EAGAIN]мьютекс остался недоступным, поскольку было превышено максимальное количество рекурсивных блокировок для мьютекса, заданного параметром mutex
[ EDEADLK]текущий поток уже владеет мьютексом.
Эта функция не возвращает код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Функция pthread_mutex_timedlock() является частью опций Threads и Timeouts и м ожет быть не представлена во всех реализациях.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
pthread_mutex_destroy (), pthread_mutex_lock(), pthread_mutex_trylock(), time (), то м Base Definitions стандарта IEEE Std 1003.1-2001, , .
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 6, основанием послужил стандарт IEEEStd 1003.1d-1999.
pthread_mutexattr_destroy
Имя
pthread_mutexattr_destroy
Синопсис
THR#include
int pthread_mutexattr_destroy (
pthread_mutexattr_t *attr); int pthread_mutexattr_init (pthread_mutexattr_t *attr);
Описание
Функция pthread_mutexattr_destroy () используется для разрушения объекта атрибутов м ьютекса, в результате чего этот объект становится неинициализированным. В конкретной реализации функция pthread_mutexattr_destroy() м ожет устанавливать объект, адресуе м ый пара м етро м attr, равны м недействительно м у значению. Разрушенный объект атрибутов м ожно снова инициализировать с по м о щ ью функции pthread_mutexattr_init (); результаты ссылки на этот объект после его разрушения не определены.
Результаты не определены, если функция pthread_mutexattr_init () вызывается, ссылаясь на уже инициализированный объект атрибутов attr.
После того как объект атрибутов мьютекса был использован для инициализации одного или нескольких мьютексов, Любая функция, которая оказывает влияние на объект атрибутов (включал деструктор), никак не отразится на ранее инициализированных мьютексах.
Возвращаемые значения
При успешно м завершении функции pthread_mutexattr_destroy() и pthread_mutexattr_init () возвра щ ают нулевое значение; в противно м случае — код ошибки, обозначаю щ ий ее характер.
Ошибки
Функция pthread_mutexattr_destroy () м ожет завершиться неудачно, если:
[EINVAL ] значение, заданное параметром attr, недействительно.
Функция pthread_mutexattr_init () завершится неудачно, если:
[ENOMEM] для инициализации объекта атрибутов м ьютекса недостаточно существующей памяти.
Эти функции не возвра щ ают код ошибки [EINTR].
pthread_mutexattr_destroy, pthread_mutexattr_init — функции разрушения и инициализации объекта атрибутов м ьютекса.
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Для получения общих разъяснений назначения атрибутов см. описание функции pthread_attr_init (). Объекты атрибутов позволяют реализациям экспериментировать с полезными расширениями и разрешают использовать расширение этого тома стандарта IEEE Std 1003.1-2001, не изменяя существующих функций. Таким образом, они обеспечивают возможности для будущего расширения этого тома стандарта IEEE Std 1003.1-2001 и уменьшают соблазн преждевременно стандартизировать семантику, которая еще широко не реализована или не до конца понята.
Рассматривалась возможность использования таких дополнительных атрибутов мьютексов, как spin__only, limited spin, no__spin, recursive и metered. (Считаем необходимым разъяснить назначение таких атрибутов, как recursive nmetered: рекурсивные мьютексы позволяют выполнение нескольких повторных блокировок со стороны текущего владельца; мьютексы с регистрирацией фиксируют длину очереди, время ожидания и т.д.) Поскольку еще нет достаточных данных о том, насколько полезны эти атрибуты, в данном томе стандарта IEEE Std 1003.1-2001 они не определены. Однако объекты атрибутов мьютексов позволяют проверить эти идеи на предмет возможной их стандартизации в будущем.
Атрибуты мьютекса и производительность
Необходимо позаботиться о том, чтобы действующие по умолчанию значения атрибутов мьютекса были определены таким образом, чтобы мьютексы, инициализированные этими значениями, имели достаточно простую семантику, согласно которой блокирование и разблокирование можно было бы выполнить с помощью инструкций, эквивалентных операциям тестирования и установки значений (и, возможно, еще некоторых других базовых инструкций).
Читать дальше