pthread_spin_init()

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

Прототип:

#include <pthread.h>
int pthread_spin_init( pthread_spinlock_t *spinner,
int pshared );

Аргументы:

spinner
Указатель на объект pthread_spinlock_t, который требуется инициализировать.
pshared
Значение, которое требуется использовать для межпроцессного атрибута циклической блокировки. Возможные значения:
PTHREAD_PROCESS_SHARED
циклическая блокировка может использоваться любым потоком, имеющим доступ к памяти, в которой выделена циклическая блокировка, даже если она выделена в памяти, совместно используемой несколькими процессами.
PTHREAD_PROCESS_PRIVATE
с циклической блокировкой могут работать только потоки, созданные в том же процессе, что и поток, инициализировавший циклическую блокировку. Если потоки разных процессов пытаются работать с такой циклической блокировкой, поведение не определено.

Библиотека:

libc

Описание:

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

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

Результат не определен при вызове pthread_spin_init() для уже инициализированной циклической блокировки или при попытке использовать циклическую блокировку, которая не была инициализирована.

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

Нуль в случае успеха или номер ошибки, указывающий на ошибку.

Коды ошибок:

EAGAIN
В системе нет ресурсов, необходимых для инициализации новой циклической блокировки.
EBUSY
Циклическая блокировка процесса spinner используется другим потоком и не может быть инициализирована.
EINVAL
Некорректный объект pthread_spinlock_t spinner.
ENOMEM
В системе недостаточно свободной памяти для создания новой циклической блокировки.

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

POSIX 1003.1 Threads, Spin Locks

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

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

pthread_spin_destroy(), pthread_spin_lock(), pthread_spin_trylock(), pthread_spin_unlock()




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