Tråde.h

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. maj 2022; verifikation kræver 1 redigering .

threads.h  - header-fil i standardbiblioteket i programmeringssproget C , der indeholder makroer, typer, konstanter og funktioner til at arbejde med tråde . Denne overskriftsfil dukkede op i C11 -standarden . [en]

Makroer

Navn Noter
thread_local makro bruges til at erklære en lokal tråd variabel
TSS_DTOR_ITERATIONS en makro, der udvides til et positivt heltalskonstantudtryk, der angiver det maksimale antal gange, som destruktoren for en tråds lokale hukommelsesmarkør vil blive kaldt af thrd_exit.

Konstanter og typer

Navn Noter
thrd_success indikerer vellykket afslutning
thrd_timedout angiver en mislykket udførelse, der sluttede på grund af en timeout
thrd_busy angiver en mislykket udførelse, der sluttede, fordi ressourcen ikke kunne tilgås
thrd_nomem indikerer en mislykket udførelse på grund af manglende hukommelse
thrd_error angiver en mislykket udførelse, der sluttede på grund af en eller anden form for fejl
thrd_t en implementeringsspecifik type, der repræsenterer et tråd-id
thrd_start_t et alias for den type int(*)(void*), der bruges af funktionen thrd_create
mtx_plain en værdi, der identificerer typen af ​​mutex, der ikke har kontrol over at blive genindhentet flere gange af den samme tråd
mtx_recursive en værdi, der identificerer typen af ​​mutex, der kan genindhentes af den samme tråd mange gange, hvilket fører en tæller for en sådan indhentning
mtx_timed værdi, der identificerer typen af ​​mutex, der understøtter låsning, returnerer en fejl efter den angivne tid er gået
mtx_t en type, der repræsenterer mutex -id'en
cnd_t type, der repræsenterer identifikatoren for betingelsesvariablen
tss_t en type, der repræsenterer en pointer til tråd-lokal hukommelse
tss_dtor_t et synonym for den type void(*)(void*), der bruges som trådens lokale hukommelsesdestruktor

Funktioner

Navn Noter
int thrd_create(thrd_t *thr, thrd_start_t func, void *arg) opretter en ny tråd, der udfører func med argumenter arg, og sætter dens identifikator i thr
int thrd_equal(thrd_t lhs, thrd_t rhs) tjekker om lhs peger på samme strøm som rhs
thrd_t thrd_current(void) returnerer ID'et for den aktuelle tråd
int thrd_sleep(const struct timespec* duration, struct timespec* remaining) stopper den aktuelle tråd for varighed, sætter den resterende tid, før arbejdet genoptages, i resterende,
void thrd_yield(void) giver opgaveplanlæggeren et hint om at omplanlægge udførelsen af ​​tråde, så andre tråde kan køre
_Noreturn void thrd_exit(int res) afslutter udførelsen af ​​den aktuelle tråd ved at sætte dens returkode til res
int thrd_detach(thrd_t thr) adskiller strømmen identificeret af thr fra det aktuelle miljø.
int thrd_join(thrd_t thr, int *res) venter på, at tråden identificeret af thr afsluttes, og placerer dens udførelseskode i res
int mtx_init(mtx_t* mutex, int type) opretter en mutex af typen ved at placere dens identifikator i variablen, som mutexen peger på
int mtx_lock(mtx_t* mutex) stopper den aktuelle tråd, indtil den mutex, der peges på af mutex, er låst op
int mtx_timedlock(mtx_t *restrict mutex, const struct timespec *restrict time_point) stopper den aktuelle tråd, indtil den mutex, der peges på af mutex, er låst op, eller indtil det tidspunkt, der peges på af time_point, er nået
int mtx_trylock(mtx_t *mutex) låser mutex'en, hvis den ikke allerede er låst
int mtx_unlock(mtx_t *mutex) låser den mutex op, der peges på af mutex
int mtx_destroy(mtx_t *mutex) ødelægger den mutex, der peges på af mutex
void call_once(once_flag* flag, void (*func)(void) func) opkald fungerer nøjagtigt én gang, selvom de kaldes fra flere tråde
int cnd_init(cnd_t* cond) opretter en betingelsesvariabel ved at sætte dens id i cond
int cnd_signal(cnd_t *cond) ophæver blokering af én tråd, der venter på tilstandsvariablen, der peges på af cond
int cnd_wait(cnd_t* cond, mtx_t* mutex) låser den mutex, der peges på af mutex, og låser tilstandsvariablen, der peges på af cond, indtil tråden rapporterer cnd_signal eller cnd_broadcast, eller der opstår en falsk wakeup
int cnd_timedwait( cnd_t* restrict cond, mtx_t* restrict mutex, const struct timespec* restrict time_point ) låser den mutex, der peges på af mutex, og låser tilstandsvariablen, der peges på af cond, indtil tråden rapporterer cnd_signal eller cnd_broadcast, eller indtil det tidspunkt, der peges på af time_point, er nået, eller indtil en falsk wakeup opstår
void cnd_destroy(cnd_t* cond); ødelægger tilstandsvariablen, der peges på af kond
int tss_create(tss_t* tss_key, tss_dtor_t destructor) opretter lokalt trådlager med den givne destructor-destruktor og sætter dens identifikator i variablen, der peges på af tss_key
void *tss_get(tss_t tss_key) returnerer de data, der er indeholdt i trådens lokale lager, identificeret med tts_key
int tss_set(tss_t tss_id, void *val) indstiller værdien gemt i tråd lokalt lager identificeret af tts_key til val
void tss_delete(tss_t tss_id) ødelægger trådlokalt lager identificeret af tts_id

Links

Noter

  1. ISO/IEC 9899:201x . Hentet 11. juli 2020. Arkiveret fra originalen 29. marts 2018.