Miért van szüksége a Pthread_cond_wait-nak mutexre?
Miért van szüksége a Pthread_cond_wait-nak mutexre?

Videó: Miért van szüksége a Pthread_cond_wait-nak mutexre?

Videó: Miért van szüksége a Pthread_cond_wait-nak mutexre?
Videó: По следам древней цивилизации? 🗿 Что, если мы ошиблись в своем прошлом? 2024, Lehet
Anonim

Az mutex magának a feltételváltozónak a védelmére szolgál. Ezért te szükség bezárult előtted csináld várják. Ezután amikor a feltételváltozót jelezzük vagy sugározzuk, a várólistán lévő szálak közül egy vagy több felébred, és a mutex varázsütésre ismét zárolva lesz ahhoz a szálhoz.

Ezzel kapcsolatban a Pthread_cond_wait feloldja a mutex zárolását?

Az pthread_cond_wait () függvény blokkolja a hívó szálat a cond feltételváltozón, és kinyit a kapcsolódó mutex mutex . A hívó szálnak zárolva kell lennie mutex mielőtt a feltételváltozóra várna. A függvényből visszatérve a mutex ismét zárolva van, és a hívó szál tulajdonában van.

Ezt követően a kérdés az, hogy miért van szükség a mutexre? Biztosítja, hogy egyszerre csak egy szál hajtson végre egy kulcsfontosságú kódrészletet, ami viszont korlátozza az adatstruktúrához való hozzáférést. Biztosítja, hogy mindkét szál teljes és megfelelő képet kapjon a memóriáról, függetlenül a CPU átrendezésétől. Az mutex feltétlenül szükséges, ha párhuzamos programozást végez.

A fentieken kívül miért van szükség a feltételváltozóknak mutexre?

Az a mutex az védelmére használják a feltétel változó maga. Ezért te szükség bezárult előtted csináld várják. Aztán amikor a feltétel változó az jelezve vagy sugározva a várólistán lévő egy vagy több szálnak akarat fel kell ébreszteni és a mutex akarat varázsütésre ismét zárva legyen ahhoz a szálhoz.

Miért van szükségünk feltételváltozókra?

Feltétel változók hadd aludjon egy sor szál, amíg meg nem csiklandozod! Megcsiklandozhat egy szálat vagy az összes alvó szálat. Ha csak egy szálat ébreszt fel, akkor az operációs rendszer dönti el, hogy melyik szálat ébressze fel.

Ajánlott: