Hoekom het Pthread_cond_wait 'n mutex nodig?
Hoekom het Pthread_cond_wait 'n mutex nodig?

Video: Hoekom het Pthread_cond_wait 'n mutex nodig?

Video: Hoekom het Pthread_cond_wait 'n mutex nodig?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Mei
Anonim

Die mutex word gebruik om die toestandsveranderlike self te beskerm. Dis hoekom jy behoefte dit het voor jou gesluit doen 'n wag. Wanneer die toestandsveranderlike dan aangedui word of na uitgesaai word, sal een of meer van die drade op die waglys wakker gemaak word en die mutex sal weer magies gesluit word vir daardie draad.

Met betrekking tot hierdie, ontsluit Pthread_cond_wait mutex?

Die pthread_cond_wag () funksie blokkeer die oproep draad op die voorwaarde veranderlike cond, en ontsluit die geassosieerde mutex mutex . Die oproepdraad moes gesluit het mutex voordat daar op die toestandsveranderlike gewag word. By terugkeer van die funksie, die mutex is weer gesluit en besit deur die oproepdraad.

Die vraag is dan hoekom mutex nodig is? Dit verseker dat slegs een draad 'n sleutelstuk kode op 'n slag uitvoer, wat op sy beurt toegang tot 'n datastruktuur beperk. Dit verseker dat die beide drade 'n volledige en behoorlike beeld van daardie geheue het, ongeag enige SVE-herrangskikking. Die mutex is 'n absolute noodsaaklikheid wanneer gelyktydige programmering gedoen word.

Behalwe hierbo, hoekom het toestandsveranderlikes mutex nodig?

Die mutex is gebruik om die te beskerm toestand veranderlike self. Dis hoekom jy behoefte dit het voor jou gesluit doen 'n wag. Dan wanneer die toestand veranderlike is gesein of uitgesaai word na, een of meer van die drade op die waglys sal wakker gemaak word en die mutex sal word weer magies gesluit vir daardie draad.

Hoekom het ons toestandsveranderlikes nodig?

Toestandsveranderlikes laat 'n stel drade slaap totdat dit kielie! Jy kan een draad of alle drade wat slaap, kielie. As jy net een draad wakker maak, sal die bedryfstelsel besluit watter draad wakker moet word.

Aanbeveel: