Zakaj Pthread_cond_wait potrebuje mutex?
Zakaj Pthread_cond_wait potrebuje mutex?

Video: Zakaj Pthread_cond_wait potrebuje mutex?

Video: Zakaj Pthread_cond_wait potrebuje mutex?
Video: Section 5 2024, Maj
Anonim

The mutex se uporablja za zaščito same spremenljivke pogoja. Zato ti potrebujejo zaklenilo se je pred tabo narediti čakati. Potem, ko je spremenljivka pogoja signalizirana ali oddana, se bo ena ali več niti na čakalnem seznamu prebudila in mutex bo spet čarobno zaklenjen za to nit.

V zvezi s tem, ali Pthread_cond_wait odklene mutex?

The pthread_cond_wait () funkcija blokira klicno nit na spremenljivki pogoja cond, in odklene povezanega mutex mutex . Klicna nit mora biti zaklenjena mutex preden počakate na spremenljivko pogoja. Ob vrnitvi iz funkcije, mutex je spet zaklenjen in je v lasti klicne niti.

Kasneje se postavlja vprašanje, zakaj je potreben mutex? Zagotavlja, da samo ena nit izvaja ključni del kode naenkrat, kar posledično omejuje dostop do podatkovne strukture. Zagotavlja, da imata obe niti popoln in pravilen pogled na ta pomnilnik, ne glede na preureditev CPU-ja. The mutex je absolutna nuja pri hkratnem programiranju.

Poleg zgoraj navedenega, zakaj pogojne spremenljivke potrebujejo mutex?

The mutex je uporablja za zaščito spremenljivka stanja sama. Zato ti potrebujejo zaklenilo se je pred tabo narediti čakati. Potem, ko je pogojna spremenljivka je signalizirano ali oddano v eno ali več niti na čakalnem seznamu volja se zbudi in mutex bo biti spet čarobno zaklenjen za to nit.

Zakaj potrebujemo spremenljivke pogoja?

Spremenljivke pogoja pustite niz niti, da spi, dokler se ne žgečka! Lahko žgečkate eno nit ali vse niti, ki spijo. Če prebudite samo eno nit, se bo operacijski sistem odločil, katero nit bo prebudil.

Priporočena: