Spec-Zone.ru › C

Заголовок стандартной библиотеки <threads.h> (C11)

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

Потоки

thrd_t полный тип объекта, определяемый реализацией и идентифицирующий поток
thrd_create
(C11)
создаёт поток
(функция)
thrd_equal
(C11)
проверяет, относятся ли два идентификатора к одному и тому же потоку
(функция)
thrd_current
(C11)
получает идентификатор текущего потока
(функция)
thrd_sleep
(C11)
приостанавливает выполнение вызывающего потока на заданный период времени
(функция)
thrd_yield
(C11)
уступает текущий квант времени
(функция)
thrd_exit
(C11)
завершает вызывающий поток
(функция)
thrd_detach
(C11)
отсоединяет поток
(функция)
thrd_join
(C11)
блокирует выполнение до завершения потока
(функция)
thrd_successthrd_timedoutthrd_busythrd_nomemthrd_error
(C11)
обозначает статус ошибки потока
(константа)
thrd_start_t
(C11)
typedef типа указателя на функцию int(*)(void*), используемого в thrd_create
(typedef)

Взаимное исключение

mtx_t идентификатор мьютекса
mtx_init
(C11)
создаёт мьютекс
(функция)
mtx_lock
(C11)
блокирует выполнение до захвата мьютекса
(функция)
mtx_timedlock
(C11)
блокирует выполнение до захвата мьютекса или истечения времени ожидания
(функция)
mtx_trylock
(C11)
захватывает мьютекс или возвращает управление без блокировки, если он уже захвачен
(функция)
mtx_unlock
(C11)
освобождает мьютекс
(функция)
mtx_destroy
(C11)
уничтожает мьютекс
(функция)
mtx_plainmtx_recursivemtx_timed
(C11)(C11)(C11)
задаёт тип мьютекса
(перечисление)
Вызов один раз
call_once
(C11)
вызывает функцию ровно один раз
(функция)

Условные переменные

cnd_t идентификатор условной переменной
cnd_init
(C11)
создаёт условную переменную
(функция)
cnd_signal
(C11)
разблокирует один поток, ожидающий условную переменную
(функция)
cnd_broadcast
(C11)
разблокирует все потоки, ожидающие условную переменную
(функция)
cnd_wait
(C11)
ожидает условную переменную
(функция)
cnd_timedwait
(C11)
ожидает условную переменную с ограничением по времени
(функция)
cnd_destroy
(C11)
уничтожает условную переменную
(функция)

Локальное хранилище потока

thread_local
(C11)(удалено в C23)
удобный макрос для спецификатора класса хранения _Thread_local
(макрос-ключевое слово)
tss_t указатель на потокоспецифичное хранилище
TSS_DTOR_ITERATIONS
(C11)
максимальное число вызовов деструкторов
(макроконстанта)
tss_dtor_t
(C11)
тип указателя на функцию void(*)(void*), используемый для деструктора TSS
(typedef)
tss_create
(C11)
создаёт указатель на потокоспецифичное хранилище с заданным деструктором
(функция)
tss_get
(C11)
читает данные из потокоспецифичного хранилища
(функция)
tss_set
(C11)
записывает данные в потокоспецифичное хранилище
(функция)
tss_delete
(C11)
освобождает ресурсы, занятые заданным указателем на потокоспецифичное хранилище
(функция)

Сводка

#define __STDC_NO_THREADS__ 202311L

#define ONCE_FLAG_INIT      /* see description */
#define TSS_DTOR_ITERATIONS /* see description */

typedef /* see description */ cnd_t;
typedef /* see description */ thrd_t;
typedef /* see description */ tss_t;
typedef /* see description */ mtx_t;
typedef /* see description */ tss_dtor_t;
typedef /* see description */ thrd_start_t;

#define mtx_plain     /* see description */
#define mtx_recursive /* see description */
#define mtx_timed     /* see description */
#define once_flag     /* see description */
#define thrd_busy     /* see description */
#define thrd_error    /* see description */
#define thrd_nomem    /* see description */
#define thrd_success  /* see description */
#define thrd_timedout /* see description */

void call_once(once_flag* flag, void (*func)(void));
int cnd_broadcast(cnd_t* cond);
void cnd_destroy(cnd_t* cond);
int cnd_init(cnd_t* cond);
int cnd_signal(cnd_t* cond);
int cnd_timedwait(cnd_t* restrict cond, mtx_t* restrict mtx,
const struct timespec* restrict ts);
int cnd_wait(cnd_t* cond, mtx_t* mtx);
void mtx_destroy(mtx_t* mtx);
int mtx_init(mtx_t* mtx, int type);
int mtx_lock(mtx_t* mtx);
int mtx_timedlock(mtx_t* restrict mtx, const struct timespec* restrict ts);
int mtx_trylock(mtx_t* mtx);
int mtx_unlock(mtx_t* mtx);
int thrd_create(thrd_t* thr, thrd_start_t func, void* arg);
thrd_t thrd_current(void);
int thrd_detach(thrd_t thr);
int thrd_equal(thrd_t thr0, thrd_t thr1);
[[noreturn]] void thrd_exit(int res);
int thrd_join(thrd_t thr, int* res);
int thrd_sleep(const struct timespec* duration, struct timespec* remaining);
void thrd_yield(void);
int tss_create(tss_t* key, tss_dtor_t dtor);
void tss_delete(tss_t key);
void* tss_get(tss_t key);
int tss_set(tss_t key, void* val);

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/header/threads

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API