Hvorfor har Pthread_cond_wait brug for en mutex?
Hvorfor har Pthread_cond_wait brug for en mutex?

Video: Hvorfor har Pthread_cond_wait brug for en mutex?

Video: Hvorfor har Pthread_cond_wait brug for en mutex?
Video: Kollektivet: Musikkvideo - Hvorfor har du på deg hatt? 2024, November
Anonim

Det mutex bruges til at beskytte selve tilstandsvariablen. Det er derfor du brug for den låste sig foran dig gør en ventetid. Når tilstandsvariablen derefter signaleres eller udsendes til, vil en eller flere af trådene på ventelisten blive vækket, og mutex vil på magisk vis blive låst igen for den tråd.

Med hensyn til dette, låser Pthread_cond_wait mutex op?

Det pthread_cond_wait () funktion blokerer den kaldende tråd på betingelsesvariablen cond, og låser op det tilknyttede mutex mutex . Opkaldstråden skal være låst mutex før man venter på betingelsesvariablen. Ved hjemkomst fra funktionen vil mutex er igen låst og ejet af den kaldende tråd.

Efterfølgende er spørgsmålet, hvorfor er mutex nødvendig? Det sikrer, at kun én tråd udfører et nøglestykke kode ad gangen, hvilket igen begrænser adgangen til en datastruktur. Det sikrer, at begge tråde har en fuld og korrekt visning af hukommelsen uanset CPU-omlægning. Det mutex er en absolut nødvendighed, når du laver samtidig programmering.

Udover ovenstående, hvorfor har tilstandsvariabler brug for mutex?

Det mutex er bruges til at beskytte betingelsesvariabel sig selv. Det er derfor du brug for den låste sig foran dig gør en ventetid. Så når betingelsesvariabel er signaleret eller udsendt til en eller flere af trådene på ventelisten vilje blive vækket og den mutex vilje blive på magisk vis låst igen for den tråd.

Hvorfor har vi brug for tilstandsvariable?

Tilstandsvariable lad et sæt tråde sove, indtil de kildes! Du kan kilde en tråd eller alle tråde, der sover. Hvis du kun vækker én tråd, vil operativsystemet beslutte, hvilken tråd der skal vækkes.

Anbefalede: