Namespaces
Variants

Standard library header <threads.h> (C11)

From cppreference.net

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

Содержание

Потоки

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

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

mtx_t идентификатор мьютекса
создает мьютекс
(функция)
блокирует до захвата мьютекса
(функция)
блокирует до захвата мьютекса или истечения времени
(функция)
захватывает мьютекс или возвращает управление без блокировки, если уже захвачен
(функция)
освобождает мьютекс
(функция)
уничтожает мьютекс
(функция)
определяет тип мьютекса
(перечисление)
Однократный вызов
вызывает функцию ровно один раз
(функция)

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

cnd_t идентификатор переменной условия
создает переменную условия
(функция)
разблокирует один поток, заблокированный на переменной условия
(функция)
разблокирует все потоки, заблокированные на переменной условия
(функция)
блокируется на переменной условия
(функция)
блокируется на переменной условия с таймаутом
(функция)
уничтожает переменную условия
(функция)

Тред-локальное хранилище

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

Синопсис

#define __STDC_NO_THREADS__ 202311L
#define ONCE_FLAG_INIT      /* см. описание */
#define TSS_DTOR_ITERATIONS /* см. описание */
typedef /* см. описание */ cnd_t;
typedef /* см. описание */ thrd_t;
typedef /* см. описание */ tss_t;
typedef /* см. описание */ mtx_t;
typedef /* см. описание */ tss_dtor_t;
typedef /* см. описание */ thrd_start_t;
#define mtx_plain     /* см. описание */
#define mtx_recursive /* см. описание */
#define mtx_timed     /* см. описание */
#define once_flag     /* см. описание */
#define thrd_busy     /* см. описание */
#define thrd_error    /* см. описание */
#define thrd_nomem    /* см. описание */
#define thrd_success  /* см. описание */
#define thrd_timedout /* см. описание */
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);