pthread_cond_init()

Инициализировать условную переменную

Прототип:

#include <pthread.h>
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int pthread_cond_init( pthread_cond_t *cond,
const pthread_condattr_t *attr );

Аргументы:

cond
Указатель на инициализируемый объект pthread_cond_t.
attr
NULL или указатель на объект pthread_condattr_t, определяющий атрибуты условной переменной. Подробности отражены на странице pthread_condattr_init().

Библиотека:

libc

Описание:

Функция pthread_cond_init() инициализирует условную переменную cond с указанными атрибутами attr. Если attr равно NULL, cond инициализируется со значениями атрибутов по умолчанию.


Caution: Следует аллоцировать объекты синхронизации только в памяти с типичным маппированием. Так, на некоторых процессорах с архитектурой PPC атомарные операции вроде pthread_mutex_lock() будут приводить к падению процесса если выделенная память является не кешируемой.

Если условная переменная аллоцируется статически, доступен способ инициализации через макрос PTHREAD_COND_INITIALIZER:

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

Условные переменные имеют по крайней мере следующие определенные атрибуты:

PTHREAD_PROCESS_PRIVATE
PTHREAD_PROCESS_SHARED
Описание представлено на странице pthread_condattr_setpshared()

Установить или определить текущее значение атрибутов можно с помощью функций pthread_condattr_getpshared() и pthread_condattr_setpshared().

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

EOK
Успешное завершение.
EAGAIN
Все объекты синхронизации в ядре уже используются.
EBUSY
Объект cond уже инициализирован – перед повторной инициализацией необходимо его освободить.
EFAULT
При доступе к cond или attr со стороны ядра произошла ошибка.
EINVAL
Параметр cond некорректен.
ENOMEM
Недостаточно памяти для инициализации условной переменной.

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

POSIX 1003.1 THR

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

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

pthread_condattr_init(), pthread_cond_destroy()




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