Standard library header <threads.h> (C11)

From cppreference.net
< c‎ | header

This header is part of concurrency support library and provides support for threads, mutual exclusion, condition variables, and thread-specific storages.

Threads

thrd_t implementation-defined complete object type identifying a thread
creates a thread
(function)
checks if two identifiers refer to the same thread
(function)
obtains the current thread identifier
(function)
suspends execution of the calling thread for the given period of time
(function)
yields the current time slice
(function)
terminates the calling thread
(function)
detaches a thread
(function)
blocks until a thread terminates
(function)
indicates a thread error status
(constant)
thrd_start_t
(C11)
a typedef of the function pointer type int(*)(void*), used by thrd_create
(typedef)

Mutual exclusion

mtx_t mutex identifier
creates a mutex
(function)
blocks until locks a mutex
(function)
blocks until locks a mutex or times out
(function)
locks a mutex or returns without blocking if already locked
(function)
unlocks a mutex
(function)
destroys a mutex
(function)
defines the type of a mutex
(enum)
Call once
calls a function exactly once
(function)

Condition variables

cnd_t condition variable identifier
creates a condition variable
(function)
unblocks one thread blocked on a condition variable
(function)
unblocks all threads blocked on a condition variable
(function)
blocks on a condition variable
(function)
blocks on a condition variable, with a timeout
(function)
destroys a condition variable
(function)

Thread-local storage

(C11)(removed in C23)
convenience macro for storage-class specifier _Thread_local
(keyword macro)
tss_t thread-specific storage pointer
maximum number of times destructors are called
(macro constant)
tss_dtor_t
(C11)
function pointer type void(*)(void*), used for TSS destructor
(typedef)
creates thread-specific storage pointer with a given destructor
(function)
reads from thread-specific storage
(function)
write to thread-specific storage
(function)
releases the resources held by a given thread-specific pointer
(function)

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);