Hvorfor trenger Pthread_cond_wait en mutex?
Hvorfor trenger Pthread_cond_wait en mutex?

Video: Hvorfor trenger Pthread_cond_wait en mutex?

Video: Hvorfor trenger Pthread_cond_wait en mutex?
Video: Hvorfor trenger vi naturmangfold? 2024, Kan
Anonim

De mutex brukes til å beskytte selve tilstandsvariabelen. Det er derfor du trenge den låste seg foran deg gjøre en ventetid. Når tilstandsvariabelen signaliseres eller sendes til, vil en eller flere av trådene på ventelisten vekkes og mutex vil på magisk vis låses igjen for den tråden.

Angående dette, låser Pthread_cond_wait opp mutex?

De pthread_cond_wait ()-funksjonen blokkerer den kallende tråden på betingelsesvariabelen cond, og låser opp det tilknyttede mutex mutex . Ringetråden må ha låst mutex før du venter på tilstandsvariabelen. Ved retur fra funksjonen vil mutex er igjen låst og eid av anropstråden.

Deretter er spørsmålet hvorfor er mutex nødvendig? Det sikrer at bare én tråd kjører en nøkkelkode om gangen, noe som igjen begrenser tilgangen til en datastruktur. Det sikrer at begge trådene har en fullstendig og riktig oversikt over det minnet uavhengig av CPU-omorganisering. De mutex er en absolutt nødvendighet når du gjør samtidig programmering.

Foruten ovenfor, hvorfor trenger tilstandsvariabler mutex?

De mutex er brukes til å beskytte tilstandsvariabel seg selv. Det er derfor du trenge den låste seg foran deg gjøre en ventetid. Så når tilstandsvariabel er signalisert eller sendt til, en eller flere av trådene på ventelisten vil bli vekket og den mutex vil bli på magisk vis låst igjen for den tråden.

Hvorfor trenger vi tilstandsvariabler?

Tilstandsvariabler la et sett med tråder sove til det kiler! Du kan kile én tråd eller alle tråder som sover. Hvis du bare vekker én tråd, vil operativsystemet bestemme hvilken tråd som skal vekkes.

Anbefalt: