Namespaces
Variants

Standard library header <threads.h> (C11)

From cppreference.net

Dieser Header ist Teil der Concurrency Support Library und bietet Unterstützung für Threads, gegenseitigen Ausschluss, Bedingungsvariablen und threadspezifische Speicher.

Inhaltsverzeichnis

Threads

thrd_t Implementierungsdefinierter vollständiger Objekttyp, der einen Thread identifiziert
Erstellt einen Thread
(Funktion)
Prüft, ob zwei Kennungen denselben Thread referenzieren
(Funktion)
Ermittelt die aktuelle Thread-Kennung
(Funktion)
Unterbricht die Ausführung des aufrufenden Threads für den angegebenen Zeitraum
(Funktion)
Gibt das aktuelle Zeitquantum ab
(Funktion)
Beendet den aufrufenden Thread
(Funktion)
Trennt einen Thread
(Funktion)
Blockiert, bis ein Thread terminiert
(Funktion)
Zeigt einen Thread-Fehlerstatus an
(Konstante)
thrd_start_t
(C11)
Ein Typedef des Funktionszeigertyps int ( * ) ( void * ) , verwendet von thrd_create
(Typedef)

Gegenseitiger Ausschluss

mtx_t Mutex-Kennung
erstellt einen Mutex
(Funktion)
blockiert bis ein Mutex gesperrt ist
(Funktion)
blockiert bis ein Mutex gesperrt ist oder Timeout erreicht
(Funktion)
sperrt einen Mutex oder kehrt zurück ohne zu blockieren falls bereits gesperrt
(Funktion)
entsperrt einen Mutex
(Funktion)
zerstört einen Mutex
(Funktion)
definiert den Typ eines Mutex
(Enumeration)
Einmaliger Aufruf
ruft eine Funktion genau einmal auf
(Funktion)

Bedingungsvariablen

cnd_t Bedingungsvariablenkennung
erstellt eine Bedingungsvariable
(Funktion)
entblockt einen auf eine Bedingungsvariable wartenden Thread
(Funktion)
entblockt alle auf eine Bedingungsvariable wartenden Threads
(Funktion)
blockiert auf einer Bedingungsvariable
(Funktion)
blockiert auf einer Bedingungsvariable mit Timeout
(Funktion)
zerstört eine Bedingungsvariable
(Funktion)

Thread-lokaler Speicher

(C11) (entfernt in C23)
Bequemlichkeitsmakro für Speicherklassenspezifizierer _Thread_local
(Schlüsselwort-Makro)
tss_t Thread-spezifischer Speicherzeiger
Maximale Anzahl der Aufrufe von Destruktoren
(Makrokonstante)
tss_dtor_t
(C11)
Funktionszeigertyp void ( * ) ( void * ) , verwendet für TSS-Destruktor
(Typdefinition)
erzeugt einen thread-spezifischen Speicherzeiger mit einem gegebenen Destruktor
(Funktion)
(C11)
liest aus thread-spezifischem Speicher
(Funktion)
(C11)
schreibt in thread-spezifischen Speicher
(Funktion)
gibt die Ressourcen eines gegebenen thread-spezifischen Zeigers frei
(Funktion)

Übersicht

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