Namensräume
Varianten
Aktionen

Standardbibliothek-Header <threads.h> (C11)

Von cppreference.com
< c‎ | header

Dieser Header ist Teil der Bibliothek zur Unterstützung der Nebenläufigkeit und bietet Unterstützung für Threads, gegenseitigen Ausschluss, Bedingungsvariablen und threadspezifische Speicher.

Inhalt

[bearbeiten] Threads

thrd_t implementierungsdefinierter vollständiger Objekttyp, der einen Thread identifiziert [bearbeiten]
erstellt einen Thread
(Funktion) [bearbeiten]
prüft, ob zwei Identifikatoren auf denselben Thread verweisen
(Funktion) [bearbeiten]
holt den Identifikator des aktuellen Threads
(Funktion) [bearbeiten]
setzt die Ausführung des aufrufenden Threads für die angegebene Zeitspanne aus
(Funktion) [bearbeiten]
gibt den aktuellen Zeitschlitz frei
(Funktion) [bearbeiten]
beendet den aufrufenden Thread
(Funktion) [bearbeiten]
trennt einen Thread ab
(Funktion) [bearbeiten]
blockiert, bis ein Thread beendet wird
(Funktion) [bearbeiten]
zeigt einen Fehlerstatus eines Threads an
(Konstante) [bearbeiten]
thrd_start_t
(C11)
ein Typedef des Funktionszeigertyps int(*)(void*), verwendet von thrd_create
(typedef) [bearbeiten]

[bearbeiten] Gegenseitiger Ausschluss

mtx_t Mutex-Identifikator [bearbeiten]
erzeugt einen Mutex
(Funktion) [bearbeiten]
blockiert, bis ein Mutex gesperrt ist
(Funktion) [bearbeiten]
blockiert, bis ein Mutex gesperrt ist, oder läuft ab
(Funktion) [bearbeiten]
sperrt einen Mutex oder kehrt zurück, ohne zu blockieren, wenn er bereits gesperrt ist
(Funktion) [bearbeiten]
entsperrt einen Mutex
(Funktion) [bearbeiten]
zerstört einen Mutex
(Funktion) [bearbeiten]
definiert den Typ eines Mutex
(enum) [bearbeiten]
Einmaliger Aufruf
ruft eine Funktion genau einmal auf
(Funktion) [bearbeiten]

[bearbeiten] Bedingungsvariablen

cnd_t Bedingungsvariablen-Identifikator
erstellt eine Bedingungsvariable
(Funktion) [bearbeiten]
entblockiert einen Thread, der auf eine Bedingungsvariable wartet
(Funktion) [bearbeiten]
entblockiert alle Threads, die auf eine Bedingungsvariable warten
(Funktion) [bearbeiten]
blockiert auf einer Bedingungsvariable
(Funktion) [bearbeiten]
blockiert auf einer Bedingungsvariable mit Timeout
(Funktion) [bearbeiten]
zerstört eine Bedingungsvariable
(Funktion) [bearbeiten]

[bearbeiten] Thread-lokaler Speicher

(C11)(entfernt in C23)
Komfortmakro für den Speicherklassenspezifizierer _Thread_local
(Schlüsselwort-Makro) [bearbeiten]
tss_t Thread-spezifischer Speicherzeiger [bearbeiten]
maximale Anzahl von Aufrufen von Destruktoren
(Makro-Konstante) [bearbeiten]
tss_dtor_t
(C11)
Funktionszeigertyp void(*)(void*), verwendet für TSS-Destruktoren
(typedef) [bearbeiten]
erstellt einen Thread-spezifischen Speicherzeiger mit einem gegebenen Destruktor
(Funktion) [bearbeiten]
liest aus dem thread-spezifischen Speicher
(Funktion) [bearbeiten]
schreibt in den thread-spezifischen Speicher
(Funktion) [bearbeiten]
gibt die Ressourcen frei, die von einem gegebenen thread-spezifischen Zeiger gehalten werden
(Funktion) [bearbeiten]

[bearbeiten] 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);