Fire.h

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 21 mai 2022; verificarea necesită 1 editare .

threads.h  - fișier antet al bibliotecii standard a limbajului de programare C , care conține macrocomenzi, tipuri, constante și funcții pentru lucrul cu fire . Acest fișier antet a apărut în standardul C11 . [unu]

Macro -uri

Nume Note
thread_local macro folosită pentru a declara o variabilă locală de fir
TSS_DTOR_ITERATIONS o macrocomandă care se extinde la o expresie constantă întreagă pozitivă care specifică numărul maxim de ori destructorul pentru indicatorul de memorie local al unui fir de execuție va fi apelat de thrd_exit.

Constante și tipuri

Nume Note
thrd_success indică finalizarea cu succes
thrd_timedout indică o execuție nereușită care s-a încheiat din cauza unui timeout
thrd_busy indică o execuție nereușită care s-a încheiat deoarece resursa nu a putut fi accesată
thrd_nomem indică o execuție nereușită din cauza lipsei de memorie
thrd_error indică o execuție nereușită care s-a încheiat din cauza unui fel de eroare
thrd_t un tip specific implementării reprezentând un ID de fir
thrd_start_t un alias pentru tipul int(*)(void*)folosit de funcția thrd_create
mtx_plain o valoare care identifică tipul de mutex care nu are controlul de a fi redobândit de mai multe ori de către același fir
mtx_recursive o valoare care identifică tipul de mutex care poate fi redobândit de același fir de multe ori, conducând un contor al unei astfel de achiziții
mtx_timed valoare care identifică tipul de mutex care acceptă blocarea, returnând o eroare după expirarea timpului specificat
mtx_t un tip care reprezintă identificatorul mutex
cnd_t tip reprezentând identificatorul variabilei de condiție
tss_t un tip care reprezintă un pointer către memoria locală a firului de execuție
tss_dtor_t un sinonim pentru tipul void(*)(void*)folosit ca destructor de memorie local al firului

Funcții

Nume Note
int thrd_create(thrd_t *thr, thrd_start_t func, void *arg) creează un fir nou care execută func cu argumente arg, punându-și identificatorul în thr
int thrd_equal(thrd_t lhs, thrd_t rhs) verifică dacă lhs indică același flux ca rhs
thrd_t thrd_current(void) returnează ID-ul firului curent
int thrd_sleep(const struct timespec* duration, struct timespec* remaining) oprește firul curent pentru o durată, punând timpul rămas înainte de a relua lucrul în rămas,
void thrd_yield(void) oferă programatorului de sarcini un indiciu pentru a reprograma execuția firelor de execuție, permițând altor fire de execuție să ruleze
_Noreturn void thrd_exit(int res) încheie execuția firului de execuție curent setând codul său de retur la res
int thrd_detach(thrd_t thr) desprinde fluxul identificat de thr de mediul curent.
int thrd_join(thrd_t thr, int *res) așteaptă ca firul de execuție identificat de thr să se termine, plasându-și codul de execuție în res
int mtx_init(mtx_t* mutex, int type) creează un mutex de tip tip prin plasarea identificatorului său în variabila indicată de mutex
int mtx_lock(mtx_t* mutex) oprește firul curent până când mutex-ul indicat de mutex este deblocat
int mtx_timedlock(mtx_t *restrict mutex, const struct timespec *restrict time_point) oprește firul curent până când mutex-ul indicat de mutex este deblocat sau până când este atins punctul de timp indicat de time_point
int mtx_trylock(mtx_t *mutex) blochează mutex-ul dacă nu este deja blocat
int mtx_unlock(mtx_t *mutex) deblochează mutex-ul indicat de mutex
int mtx_destroy(mtx_t *mutex) distruge mutex-ul indicat de mutex
void call_once(once_flag* flag, void (*func)(void) func) apelurile funcționează exact o dată, chiar dacă sunt apelate din mai multe fire
int cnd_init(cnd_t* cond) creează o variabilă de condiție punându-și id-ul în cond
int cnd_signal(cnd_t *cond) deblochează un fir care așteaptă pe variabila de condiție indicată de cond
int cnd_wait(cnd_t* cond, mtx_t* mutex) deblochează mutex-ul indicat de mutex și blochează variabila de condiție indicată de cond până când firul raportează cnd_signal sau cnd_broadcast sau apare o trezire falsă
int cnd_timedwait( cnd_t* restrict cond, mtx_t* restrict mutex, const struct timespec* restrict time_point ) deblochează mutex-ul indicat de mutex și blochează variabila de condiție indicată de cond până când firul de execuție raportează cnd_signal sau cnd_broadcast, sau până când este atins punctul de timp indicat de time_point sau până când apare o trezire falsă
void cnd_destroy(cnd_t* cond); distruge variabila de condiție indicată de cond
int tss_create(tss_t* tss_key, tss_dtor_t destructor) creează un fir de stocare local cu destructorul dat, punând identificatorul acestuia în variabila indicată de tss_key
void *tss_get(tss_t tss_key) returnează datele conținute în stocarea locală a firului de execuție, identificate prin tts_key
int tss_set(tss_t tss_id, void *val) setează valoarea stocată în stocarea locală a firelor identificate de tts_key la val
void tss_delete(tss_t tss_id) distruge stocarea locală a firelor identificată de tts_id

Link -uri

Note

  1. ISO/IEC 9899:201x . Preluat la 11 iulie 2020. Arhivat din original la 29 martie 2018.