Namespaces
Variants

Standard library header <threads.h> (C11)

From cppreference.net

Cet en-tête fait partie de la bibliothèque de support de concurrence et fournit le support pour les threads, l'exclusion mutuelle, les variables conditionnelles et les stockages spécifiques aux threads.

Table des matières

Fils d'exécution

thrd_t type d'objet complet défini par l'implémentation identifiant un thread
crée un thread
(fonction)
vérifie si deux identifiants se réfèrent au même thread
(fonction)
obtient l'identifiant du thread courant
(fonction)
suspend l'exécution du thread appelant pour une période de temps donnée
(fonction)
abandonne la tranche de temps courante
(fonction)
termine le thread appelant
(fonction)
détache un thread
(fonction)
bloque jusqu'à la terminaison d'un thread
(fonction)
indique un statut d'erreur de thread
(constante)
thrd_start_t
(C11)
un typedef du type pointeur de fonction int ( * ) ( void * ) , utilisé par thrd_create
(typedef)

Exclusion mutuelle

mtx_t identifiant de mutex
crée un mutex
(fonction)
bloque jusqu'à l'obtention du verrou d'un mutex
(fonction)
bloque jusqu'à l'obtention du verrou d'un mutex ou expiration du délai
(fonction)
verrouille un mutex ou retourne sans bloquer s'il est déjà verrouillé
(fonction)
déverrouille un mutex
(fonction)
détruit un mutex
(fonction)
définit le type d'un mutex
(énumération)
Appel unique
appelle une fonction exactement une fois
(fonction)

Variables de condition

cnd_t identifiant de variable de condition
crée une variable de condition
(fonction)
débloque un thread bloqué sur une variable de condition
(fonction)
débloque tous les threads bloqués sur une variable de condition
(fonction)
se bloque sur une variable de condition
(fonction)
se bloque sur une variable de condition, avec un délai d'expiration
(fonction)
détruit une variable de condition
(fonction)

Stockage local au thread

(C11) (supprimé en C23)
macro de commodité pour le spécificateur de classe de stockage _Thread_local
(macro de mot-clé)
tss_t pointeur de stockage spécifique au thread
nombre maximum d'appels aux destructeurs
(constante macro)
tss_dtor_t
(C11)
type de pointeur de fonction void ( * ) ( void * ) , utilisé pour le destructeur TSS
(typedef)
crée un pointeur de stockage spécifique au thread avec un destructeur donné
(fonction)
(C11)
lit depuis le stockage spécifique au thread
(fonction)
(C11)
écrit dans le stockage spécifique au thread
(fonction)
libère les ressources détenues par un pointeur spécifique au thread donné
(fonction)

Synopsis

#define __STDC_NO_THREADS__ 202311L
#define ONCE_FLAG_INIT      /* voir description */
#define TSS_DTOR_ITERATIONS /* voir description */
typedef /* voir description */ cnd_t;
typedef /* voir description */ thrd_t;
typedef /* voir description */ tss_t;
typedef /* voir description */ mtx_t;
typedef /* voir description */ tss_dtor_t;
typedef /* voir description */ thrd_start_t;
#define mtx_plain     /* voir description */
#define mtx_recursive /* voir description */
#define mtx_timed     /* voir description */
#define once_flag     /* voir description */
#define thrd_busy     /* voir description */
#define thrd_error    /* voir description */
#define thrd_nomem    /* voir description */
#define thrd_success  /* voir description */
#define thrd_timedout /* voir 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);