Заголовок стандартной библиотеки <threads.h> (C11)
Этот заголовок входит в библиотеку поддержки параллелизма и обеспечивает поддержку потоков, взаимного исключения, условных переменных и потокоспецифичного хранилища.
Потоки
thrd_t | полный тип объекта, определяемый реализацией и идентифицирующий поток |
|
(C11) | создаёт поток (функция) |
|
(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 /* 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