Proč Pthread_cond_wait potřebuje mutex?
Proč Pthread_cond_wait potřebuje mutex?

Video: Proč Pthread_cond_wait potřebuje mutex?

Video: Proč Pthread_cond_wait potřebuje mutex?
Video: What is a mutex in C? (pthread_mutex) 2024, Listopad
Anonim

The mutex se používá k ochraně samotné proměnné podmínky. Proto ty potřeba zamklo se to před tebou dělat čekání. Když je pak proměnná stavu signalizována nebo vysílána, jedno nebo více vláken na čekacím seznamu se probudí a mutex bude pro toto vlákno znovu magicky uzamčeno.

Pokud jde o toto, odemyká Pthread_cond_wait mutex?

The pthread_cond_wait () funkce blokuje volající vlákno v proměnné podmínky cond a odemkne související mutex mutex . Volající vlákno musí být uzamčeno mutex před čekáním na proměnnou podmínky. Při návratu z funkce, mutex je opět uzamčen a vlastněn volajícím vláknem.

Následně je otázkou, proč je potřeba mutex? Zajišťuje, že klíčovou část kódu současně provádí pouze jedno vlákno, což zase omezuje přístup k datové struktuře. Zajišťuje, že obě vlákna mají úplný a správný pohled na tuto paměť bez ohledu na jakékoli přeřazení CPU. The mutex je absolutní nutností při souběžném programování.

Kromě výše uvedeného, proč proměnné podmínky potřebují mutex?

The mutex je slouží k ochraně stavová proměnná sám. Proto ty potřeba zamklo se to před tebou dělat čekání. Pak když stavová proměnná je signalizováno nebo vysíláno do jednoho nebo více vláken na čekací listině vůle být probuzen a mutex bude být pro toto vlákno znovu magicky uzamčen.

Proč potřebujeme podmínkové proměnné?

Podmínkové proměnné nechte sadu vláken spát, dokud nebude lechtat! Můžete polechtat jedno vlákno nebo všechna vlákna, která spí. Pokud probudíte pouze jedno vlákno, operační systém rozhodne, které vlákno se má probudit.

Doporučuje: