Standard library header <threads.h> (C11)
From cppreference.com
C
Concurrency support (C11)
Standard Library headers
<stdmchar.h> (C29)
<stdnoreturn.h> (C11*)
<tgmath.h> (C99)
<threads.h> (C11)
<uchar.h> (C11)
<wchar.h> (C95)
<wctype.h> (C95)
This header is part of concurrency support library and provides support for threads, mutual exclusion, condition variables, and thread-specific storages.
Contents
[edit] Threads
thrd_t
implementation-defined complete object type identifying a thread [edit]
thrd_start_t
(C11)
(typedef) [edit]
[edit] Mutual exclusion
mtx_t
mutex identifier [edit]
Call once
[edit] Condition variables
cnd_t
condition variable identifier
[edit] Thread-local storage
(C11)(removed in C23)
(keyword macro) [edit]
tss_t
thread-specific storage pointer [edit]
[edit] Synopsis
#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);