Prečo Pthread_cond_wait potrebuje mutex?
Prečo Pthread_cond_wait potrebuje mutex?

Video: Prečo Pthread_cond_wait potrebuje mutex?

Video: Prečo Pthread_cond_wait potrebuje mutex?
Video: Pthread Condvars: Posix Compliance and the PI gap 2024, November
Anonim

The mutex sa používa na ochranu samotnej premennej podmienky. Preto ty potrebu zamkla sa pred tebou robiť čakanie. Potom, keď je stavová premenná signalizovaná alebo vysielaná, jedno alebo viac vlákien na čakacom zozname sa prebudí a mutex bude pre toto vlákno opäť magicky uzamknuté.

Čo sa týka tohto, odomyká Pthread_cond_wait mutex?

The pthread_cond_wait () funkcia blokuje volajúce vlákno v premennej podmienky cond a odomkne pridružené mutex mutex . Volajúce vlákno musí byť uzamknuté mutex pred čakaním na premennú podmienky. Pri návrate z funkcie sa mutex je opäť uzamknutý a vo vlastníctve volajúceho vlákna.

Následne je otázkou, prečo je potrebný mutex? Zabezpečuje, že kľúčovú časť kódu súčasne vykonáva iba jedno vlákno, čo zase obmedzuje prístup k dátovej štruktúre. Zabezpečuje, že obe vlákna majú úplný a správny pohľad na túto pamäť bez ohľadu na akékoľvek preskupenie CPU. The mutex je absolútnou nevyhnutnosťou pri súbežnom programovaní.

Okrem vyššie uvedeného, prečo premenné podmienok potrebujú mutex?

The mutex je používané na ochranu stavová premenná sám. Preto ty potrebu zamkla sa pred tebou robiť čakanie. Potom, keď stavová premenná je signalizované alebo vysielané do jedného alebo viacerých vlákien na čakacom zozname bude byť prebudený a mutex bude byť pre toto vlákno opäť magicky uzamknutý.

Prečo potrebujeme stavové premenné?

Podmienkové premenné nechajte sadu vlákien spať, kým vás nešteklia! Môžete poštekliť jedno vlákno alebo všetky vlákna, ktoré spia. Ak prebudíte iba jedno vlákno, operačný systém rozhodne, ktoré vlákno sa má prebudiť.

Odporúča: