Kāpēc Pthread_cond_wait ir nepieciešams mutex?
Kāpēc Pthread_cond_wait ir nepieciešams mutex?

Video: Kāpēc Pthread_cond_wait ir nepieciešams mutex?

Video: Kāpēc Pthread_cond_wait ir nepieciešams mutex?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Maijs
Anonim

The mutex tiek izmantots, lai aizsargātu pašu nosacījumu mainīgo. Tāpēc tu nepieciešams tas aizslēdzās jūsu priekšā darīt gaidīšana. Pēc tam, kad nosacījuma mainīgais tiek signalizēts vai pārraidīts, viens vai vairāki gaidīšanas saraksta pavedieni tiks pamodināti un mutex atkal maģiski tiks bloķēta šim pavedienam.

Vai Pthread_cond_wait atbloķē mutex?

The pthread_cond_wait () funkcija bloķē izsaucošo pavedienu nosacījuma mainīgajam cond, un atslēdz saistītais mutex mutex . Izsaucošajam pavedienam jābūt bloķētam mutex pirms gaidāt nosacījuma mainīgo. Atgriežoties no funkcijas, mutex atkal ir bloķēts un pieder izsaucošajam pavedienam.

Pēc tam rodas jautājums, kāpēc ir vajadzīgs mutex? Tas nodrošina, ka tikai viens pavediens vienlaikus izpilda galveno koda daļu, kas savukārt ierobežo piekļuvi datu struktūrai. Tas nodrošina, ka abiem pavedieniem ir pilnīgs un pareizs priekšstats par šo atmiņu neatkarīgi no CPU pārkārtošanas. The mutex ir absolūta nepieciešamība, veicot vienlaicīgu programmēšanu.

Papildus iepriekš minētajam, kāpēc nosacījumu mainīgajiem ir nepieciešams mutex?

The mutex ir izmanto, lai aizsargātu nosacījuma mainīgais pati par sevi. Tāpēc tu nepieciešams tas aizslēdzās jūsu priekšā darīt gaidīšana. Tad, kad nosacījuma mainīgais ir signalizēja vai pārraida vienam vai vairākiem gaidīšanas saraksta pavedieniem gribu tikt pamodinātam un mutex griba atkal maģiski aizslēgts šim pavedienam.

Kāpēc mums ir nepieciešami nosacījumu mainīgie?

Nosacījuma mainīgie ļaujiet diegu komplektam gulēt līdz kutināšanai! Jūs varat kutināt vienu pavedienu vai visus pavedienus, kas guļ. Ja pamodināt tikai vienu pavedienu, operētājsistēma izlems, kuru pavedienu modināt.

Ieteicams: