pthread_spin_lock()

Активировать циклическую блокировку

Прототип:

#include <pthread.h>
int pthread_spin_lock( pthread_spinlock_t *spinner );

Аргументы:

spinner
Указатель на объект pthread_spinlock_t, который требуется заблокировать.

Библиотека:

libc

Описание:

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

Если поток пытается заблокировать циклическую блокировку, которая уже заблокирована с помощью pthread_spin_lock() или pthread_spin_trylock(), поток возвращает EDEADLK.

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

EOK
Успешное завершение.
EAGAIN
Недостаточно ресурсов для блокировки spinner.
EDEADLK
Вызывающий поток уже удерживает блокировку spinner.
EINVAL
Некорректный объект pthread_spinlock_t spinner.

Классификация:

POSIX 1003.1 Threads, Spin Locks

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Можно не получить желаемого поведения от данной функции, поскольку текущая реализация использует мьютексы.

Тематические ссылки:

pthread_spin_destroy(), pthread_spin_init(), pthread_spin_trylock(), pthread_spin_unlock()




Предыдущий раздел: Описание API системной библиотеки