Varför behöver Pthread_cond_wait en mutex?
Varför behöver Pthread_cond_wait en mutex?

Video: Varför behöver Pthread_cond_wait en mutex?

Video: Varför behöver Pthread_cond_wait en mutex?
Video: Varför behöver vi Magnesium 2024, Maj
Anonim

De mutex används för att skydda själva villkorsvariabeln. Det är därför du behöver den låste sig framför dig do vänta. När sedan tillståndsvariabeln signaleras eller sänds till kommer en eller flera av trådarna på väntelistan att väckas och mutex kommer magiskt låsas igen för den tråden.

Angående detta, låser Pthread_cond_wait upp mutex?

De pthread_cond_wait ()-funktionen blockerar den anropande tråden på villkorsvariabeln cond, and låser upp den associerade mutex mutex . Anropstråden måste ha låst mutex innan du väntar på villkorsvariabeln. Vid återkomst från funktionen, mutex är återigen låst och ägs av den anropande tråden.

Därefter är frågan, varför behövs mutex? Det säkerställer att endast en tråd exekverar en nyckelkod åt gången, vilket i sin tur begränsar åtkomsten till en datastruktur. Det säkerställer att de båda trådarna har en fullständig och korrekt bild av det minnet, oavsett CPU-omordning. De mutex är en absolut nödvändighet när man gör samtidig programmering.

Förutom ovan, varför behöver tillståndsvariabler mutex?

De mutex är används för att skydda villkorsvariabel sig. Det är därför du behöver den låste sig framför dig do vänta. Sedan när villkorsvariabel är signaleras eller sänds till, en eller flera av trådarna på väntelistan kommer bli väckt och den mutex kommer vara magiskt låst igen för den tråden.

Varför behöver vi tillståndsvariabler?

Tillståndsvariabler låt en uppsättning trådar sova tills de kittlas! Du kan kittla en tråd eller alla trådar som sover. Om du bara väcker en tråd kommer operativsystemet att bestämma vilken tråd som ska väckas.

Rekommenderad: