Pse Pthread_cond_wait ka nevojë për një mutex?
Pse Pthread_cond_wait ka nevojë për një mutex?

Video: Pse Pthread_cond_wait ka nevojë për një mutex?

Video: Pse Pthread_cond_wait ka nevojë për një mutex?
Video: Section 5 2024, Mund
Anonim

Të mutex përdoret për të mbrojtur vetë variablin e gjendjes. Kjo është arsyeja pse ju nevojë u mbyll para teje bëj një pritje. Më pas, kur ndryshorja e kushtit sinjalizohet ose transmetohet, një ose më shumë nga thread-ët në listën e pritjes do të zgjohen dhe mutex do të mbyllet përsëri në mënyrë magjike për atë fije.

Lidhur me këtë, a e zhbllokon Pthread_cond_wait mutex?

Të pthread_cond_wait Funksioni () bllokon thread-in thirrës në kondicionin e ndryshores së kushtit, dhe zhbllokon të lidhura mutex mutex . Tema e thirrjes duhet të jetë e kyçur mutex përpara se të presim variablin e kushtit. Pas kthimit nga funksioni, mutex është përsëri i kyçur dhe në pronësi të fillit thirrës.

Më pas, pyetja është, pse nevojitet mutex? Ai siguron që vetëm një thread po ekzekuton një pjesë kyçe të kodit në të njëjtën kohë, e cila nga ana tjetër kufizon aksesin në një strukturë të dhënash. Siguron që të dy thread-at të kenë një pamje të plotë dhe të duhur të asaj memorie, pavarësisht nga çdo rirenditje e CPU-së. Të mutex është një domosdoshmëri absolute kur bëhet programimi i njëkohshëm.

Përveç sa më sipër, pse variablat e kushteve kanë nevojë për mutex?

Të mutex është përdoret për të mbrojtur variabli i gjendjes vetë. Kjo është arsyeja pse ju nevojë u mbyll para teje bëj një pritje. Pastaj kur ndryshorja e gjendjes është sinjalizuar ose transmetuar në një ose më shumë prej temave në listën e pritjes do të zgjohen dhe të mutex do të mbyllet përsëri në mënyrë magjike për atë fije.

Pse na duhen variablat e kushteve?

Variablat e gjendjes lëreni një grup fijesh të flenë derisa të gudulisni! Ju mund të gudulisni një fije ose të gjitha fijet që janë duke fjetur. Nëse zgjoni vetëm një fije, atëherë sistemi operativ do të vendosë se cilin fije të zgjojë.

Recommended: