Scroll to navigation

pthread_rwlockattr_setkind_np(3) Library Functions Manual pthread_rwlockattr_setkind_np(3)

ИМЯ

pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np - изменяет/возвращает вид блокировки чтения-записи у объекта-атрибута блокировки чтения-записи нити

LIBRARY

POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

#include <pthread.h>
int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *attr,
                       int pref);
int pthread_rwlockattr_getkind_np(
                       const pthread_rwlockattr_t *restrict attr,
                       int *restrict pref);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

pthread_rwlockattr_setkind_np(), pthread_rwlockattr_getkind_np():


_XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L

ОПИСАНИЕ

Функция pthread_rwlockattr_setkind_np() изменяет атрибут «вида блокировки» у объекта-атрибута блокировки чтения-записи, на который указывает attr, в значение pref. Значением pref может быть одно из:

Значение по умолчанию. Нить может удерживать многократную блокировку чтения; то есть блокировки чтения рекурсивны. Согласно Single Unix Specification, поведение не определено, если читатель пытается установить блокировку и отсутствует блокировка записи, но писатели ждут. Давая преимущество читателю установкой PTHREAD_RWLOCK_PREFER_READER_NP подразумевается, что читатель будет получать запрашиваемую блокировку даже, если ждёт писатель. Пока есть читатели писатель будет ждать.
This is intended as the write lock analog of PTHREAD_RWLOCK_PREFER_READER_NP. This is ignored by glibc because the POSIX requirement to support recursive read locks would cause this option to create trivial deadlocks; instead use PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP which ensures the application developer will not take recursive read locks thus avoiding deadlocks.
Данный вид блокировки помогает избежать ожидания писателя всё время пока не освободится рекурсивная блокировка чтения.

Функция pthread_rwlockattr_getkind_np() сохраняет атрибут «вида блокировки» у объекта-атрибута блокировки чтения-записи, на который указывает attr, в указатель pref.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении эти функции возвращают 0. При корректных аргументах указателей pthread_rwlockattr_getkind_np() всегда выполняется успешно. При ошибке pthread_rwlockattr_setkind_np() возвращает ненулевой номер ошибки.

ОШИБКИ

Неподдерживаемое значение pref.

ВЕРСИИ

Функции pthread_rwlockattr_getkind_np() и pthread_rwlockattr_setkind_np() впервые появились в glibc 2.1.

СТАНДАРТЫ

Данные функции являются не стандартизированными расширениями GNU, о чем свидетельствует суффикс «_np» (nonportable).

СМОТРИТЕ ТАКЖЕ

pthreads(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

30 октября 2022 г. Linux man-pages 6.03