Standard library header <threads.h> (C11)
From cppreference.net
Этот заголовок является частью библиотеки поддержки параллелизма и предоставляет поддержку для потоков, взаимного исключения, условных переменных и потоково-специфичных хранилищ.
Содержание |
Потоки
thrd_t
|
определяемый реализацией полный объектный тип, идентифицирующий поток |
|
(C11)
|
создает поток
(функция) |
|
(C11)
|
проверяет, ссылаются ли два идентификатора на один и тот же поток
(функция) |
|
(C11)
|
получает идентификатор текущего потока
(функция) |
|
(C11)
|
приостанавливает выполнение вызывающего потока на заданный период времени
(функция) |
|
(C11)
|
уступает текущий квант времени
(функция) |
|
(C11)
|
завершает вызывающий поток
(функция) |
|
(C11)
|
отсоединяет поток
(функция) |
|
(C11)
|
блокируется до завершения потока
(функция) |
|
указывает статус ошибки потока
(константа) |
|
|
thrd_start_t
(C11)
|
typedef типа указателя на функцию
int
(
*
)
(
void
*
)
, используемый в
thrd_create
(typedef) |
Взаимное исключение
mtx_t
|
идентификатор мьютекса |
|
(C11)
|
создает мьютекс
(функция) |
|
(C11)
|
блокирует до захвата мьютекса
(функция) |
|
(C11)
|
блокирует до захвата мьютекса или истечения времени
(функция) |
|
(C11)
|
захватывает мьютекс или возвращает управление без блокировки, если уже захвачен
(функция) |
|
(C11)
|
освобождает мьютекс
(функция) |
|
(C11)
|
уничтожает мьютекс
(функция) |
|
(C11)
(C11)
(C11)
|
определяет тип мьютекса
(перечисление) |
Однократный вызов |
|
|
(C11)
|
вызывает функцию ровно один раз
(функция) |
Условные переменные
cnd_t
|
идентификатор переменной условия |
|
(C11)
|
создает переменную условия
(функция) |
|
(C11)
|
разблокирует один поток, заблокированный на переменной условия
(функция) |
|
(C11)
|
разблокирует все потоки, заблокированные на переменной условия
(функция) |
|
(C11)
|
блокируется на переменной условия
(функция) |
|
(C11)
|
блокируется на переменной условия с таймаутом
(функция) |
|
(C11)
|
уничтожает переменную условия
(функция) |
Тред-локальное хранилище
|
(C11)
(удалено в C23)
|
удобный макрос для спецификатора класса хранения
_Thread_local
(макрос-ключевое слово) |
tss_t
|
указатель на потоковое хранилище |
|
(C11)
|
максимальное количество вызовов деструкторов
(макроконстанта) |
tss_dtor_t
(C11)
|
тип указателя на функцию
void
(
*
)
(
void
*
)
, используемый для деструктора TSS
(typedef) |
|
(C11)
|
создает указатель на потоковое хранилище с заданным деструктором
(функция) |
|
(C11)
|
читает из потокового хранилища
(функция) |
|
(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);