Man page - pthread_spin_unlock(3)

Packages contains this manual

Available languages:

en fr ru ro

Manual

pthread_spin_lock

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
CAVEATS
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock - блокирует и разблокирует блокировку циклически (spin lock)

БИБЛИОТЕКА

Библиотека потоков POSIX ( libpthread , -lpthread )

ОБЗОР

#include <pthread.h>

int pthread_spin_lock(pthread_spinlock_t * lock );
int pthread_spin_trylock(pthread_spinlock_t *
lock );
int pthread_spin_unlock(pthread_spinlock_t *
lock );

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

pthread_spin_lock (), pthread_spin_trylock ():
_POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ

Функция pthread_spin_lock () блокирует циклическую блокировку (spin lock), на которую указывает lock . Если циклическая блокировка разблокирована, то вызывающая нить сразу же захватывает блокировку. Если циклическая блокировка заблокирована, то проверка блокировки продолжается до тех пор, пока она не освободится, и в этот момент вызывающая нить захватит блокировку.

Вызов pthread_spin_lock () для блокировки, которая уже захвачена вызывающим или не была инициализирована с помощью pthread_spin_init (3), приводит к непредсказуемому поведению.

Функция pthread_spin_trylock () подобна pthread_spin_lock (), за исключением того, что если циклическая блокировка, на которую указывает lock заблокирована, то вместо зацикливания вызов завершается с ошибкой EBUSY .

Функция pthread_spin_unlock () разблокирует циклическую блокировку, на которую указывает lock . Если какая-то нить зациклена в ожидании блокировки, то она захватит блокировку.

Вызов pthread_spin_unlock () для блокировки, которая не была захвачена вызывающим, приводит к непредсказуемому поведению.

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

При успешном выполнении эти функции возвращают ноль. При ошибке возвращается номер ошибки.

ОШИБКИ

Функция pthread_spin_lock () может завершаться со следующими ошибками:
EDEADLOCK

Система обнаружила условие взаимной блокировки.

Функция pthread_spin_trylock () может завершаться со следующими ошибками:

EBUSY

Циклическая блокировка уже заблокирована другой нитью.

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

glibc 2.2. POSIX.1-2001.

CAVEATS

Применение любой из описанных в этой странице функций к не инициализированной циклической блокировке приведёт к непредсказуемому поведению.

Внимательно прочитайте ЗАМЕЧАНИЯ в pthread_spin_init (3).

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

pthread_spin_destroy (3), pthread_spin_init (3), 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> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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