De ce are nevoie Pthread_cond_wait de un mutex?
De ce are nevoie Pthread_cond_wait de un mutex?

Video: De ce are nevoie Pthread_cond_wait de un mutex?

Video: De ce are nevoie Pthread_cond_wait de un mutex?
Video: Кто-нибудь из вас слышал о полуночной игре? Страшные истории. Мистика. Ужасы 2024, Mai
Anonim

The mutex este folosit pentru a proteja variabila condiție în sine. De aceea tu nevoie s-a blocat înaintea ta do o asteptare. Apoi, când variabila de condiție este semnalată sau difuzată către, unul sau mai multe dintre firele de execuție de pe lista de așteptare vor fi trezite și mutex va fi blocat magic din nou pentru acel thread.

În ceea ce privește acest lucru, Pthread_cond_wait deblochează mutex-ul?

The pthread_cond_wait Funcția () blochează firul de apel pe variabila de condiție cond și se deblochează asociatul mutex mutex . Firul de apel trebuie să se fi blocat mutex înainte de a aștepta variabila de condiție. La întoarcerea de la funcție, the mutex este din nou blocat și deținut de firul apelant.

Ulterior, întrebarea este, de ce este nevoie de mutex? Se asigură că doar un fir execută o bucată cheie de cod la un moment dat, ceea ce, la rândul său, limitează accesul la o structură de date. Se asigură că ambele fire au o vedere completă și corectă a acelei memorie, indiferent de orice reordonare a CPU. The mutex este o necesitate absolută atunci când faceți programare concomitentă.

Alături de mai sus, de ce variabilele de condiție au nevoie de mutex?

The mutex este folosit pentru a proteja variabila de conditie în sine. De aceea tu nevoie s-a blocat înaintea ta do o asteptare. Apoi, când variabila de condiție este semnalat sau difuzat către unul sau mai multe dintre firele de pe lista de așteptare voi fi trezit și cel mutex va fi blocat magic din nou pentru acel fir.

De ce avem nevoie de variabile de condiție?

Variabile de condiție lăsați un set de fire să doarmă până când se gâdilă! Puteți gâdila un fir sau toate firele care dorm. Dacă activați doar un fir, sistemul de operare va decide ce fir să trezească.

Recomandat: