Kodėl Pthread_cond_wait reikia mutex?
Kodėl Pthread_cond_wait reikia mutex?

Video: Kodėl Pthread_cond_wait reikia mutex?

Video: Kodėl Pthread_cond_wait reikia mutex?
Video: Pthread Condition Variables 2024, Gegužė
Anonim

The mutex naudojamas pačiam sąlygos kintamajam apsaugoti. Štai kodėl tu reikia jis užrakintas prieš tave daryti laukimas. Tada, kai būsenos kintamasis yra signalizuojamas arba perduodamas, viena ar kelios laukiančiųjų sąrašo gijos bus pažadintos ir mutex bus vėl magiškai užrakintas tam siūlui.

Kalbant apie tai, ar Pthread_cond_wait atrakina mutex?

The pthread_cond_wait () funkcija blokuoja iškvietimo giją dėl sąlygos kintamojo cond, ir atrakina susiję mutex mutex . Skambučio gija turi būti užrakinta mutex prieš laukdami sąlygos kintamojo. Grįžus iš funkcijos, mutex vėl užrakintas ir priklauso skambinančiai gijai.

Vėliau kyla klausimas, kodėl reikalingas mutex? Tai užtikrina, kad tik viena gija vienu metu vykdytų pagrindinę kodo dalį, o tai savo ruožtu riboja prieigą prie duomenų struktūros. Tai užtikrina, kad abi gijos turėtų visą ir tinkamą tos atminties vaizdą, neatsižvelgiant į bet kokį procesoriaus pertvarkymą. The mutex yra absoliuti būtinybė atliekant lygiagretųjį programavimą.

Be to, kodėl sąlygų kintamiesiems reikia mutex?

The mutex yra naudojamas apsaugoti būklės kintamasis pats. Štai kodėl tu reikia jis užrakintas prieš tave daryti laukimas. Tada, kai sąlygos kintamasis yra signalizuojama arba transliuojama vienai ar daugiau laukiančiųjų sąrašo gijų valios būti pažadintas ir mutex valia vėl stebuklingai užrakintas šiai gijai.

Kodėl mums reikia sąlygų kintamųjų?

Sąlygų kintamieji leiskite siūlų rinkiniui užmigti, kol pakutensite! Galite pakutenti vieną arba visus miegančius siūlus. Jei pažadinsite tik vieną giją, operacinė sistema nuspręs, kurią giją pažadinti.

Rekomenduojamas: