Bakit kailangan ng Pthread_cond_wait ng mutex?
Bakit kailangan ng Pthread_cond_wait ng mutex?

Video: Bakit kailangan ng Pthread_cond_wait ng mutex?

Video: Bakit kailangan ng Pthread_cond_wait ng mutex?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Mayo
Anonim

Ang mutex ay ginagamit upang protektahan ang variable ng kundisyon mismo. Kaya ikaw kailangan naka-lock ito sa harap mo gawin isang paghihintay. Pagkatapos kapag ang variable ng kundisyon ay sinenyasan o nai-broadcast sa, isa o higit pa sa mga thread sa listahan ng naghihintay ay magising at ang mutex ay mahiwagang mai-lock muli para sa thread na iyon.

Tungkol dito, ina-unlock ba ng Pthread_cond_wait ang mutex?

Ang pthread_cond_wait () function na hinaharangan ang calling thread sa condition variable cond, at nagbubukas ang nauugnay mutex mutex . Naka-lock dapat ang thread ng pagtawag mutex bago maghintay sa variable ng kondisyon. Sa pagbabalik mula sa function, ang mutex ay muling naka-lock at pagmamay-ari ng thread ng pagtawag.

Kasunod nito, ang tanong ay, bakit kailangan ang mutex? Tinitiyak nito na isang thread lang ang nagpapatupad ng isang mahalagang piraso ng code sa isang pagkakataon, na naglilimita naman sa pag-access sa isang istraktura ng data. Tinitiyak nito na ang parehong mga thread ay may buo at wastong pagtingin sa memorya na iyon anuman ang anumang muling pagsasaayos ng CPU. Ang mutex ay isang ganap na pangangailangan kapag gumagawa ng kasabay na programming.

Sa tabi sa itaas, bakit kailangan ng mga variable ng kondisyon ng mutex?

Ang ang mutex ay ginamit upang protektahan ang variable ng kondisyon mismo. Kaya ikaw kailangan naka-lock ito sa harap mo gawin isang paghihintay. Pagkatapos kapag ang variable ng kondisyon ay signaled o broadcast sa, isa o higit pa sa mga thread sa listahan ng naghihintay kalooban magising at ang gagawin ni mutex maging mahiwagang i-lock muli para sa thread na iyon.

Bakit kailangan natin ng mga variable ng kondisyon?

Mga variable ng kondisyon payagan ang isang hanay ng mga thread na matulog hanggang sa kiliti! Maaari mong kilitiin ang isang thread o lahat ng thread na natutulog. Kung gisingin mo lang ang isang thread, magpapasya ang operating system kung aling thread ang gisingin.

Inirerekumendang: