Miks vajab Pthread_cond_wait mutexit?
Miks vajab Pthread_cond_wait mutexit?

Video: Miks vajab Pthread_cond_wait mutexit?

Video: Miks vajab Pthread_cond_wait mutexit?
Video: Miks keskastmejuht vajab tippjuhtide tuge? 2024, Mai
Anonim

The mutex kasutatakse tingimusmuutuja enda kaitsmiseks. Sellepärast sina vaja see lukustus teie ees teha ootamine. Kui tingimusmuutuja on signaalitud või edastatud, äratatakse üks või mitu ootenimekirja lõime ja mutex lukustatakse selle lõime jaoks uuesti võluväel.

Seoses sellega, kas Pthread_cond_wait avab mutexi?

The pthread_cond_wait () funktsioon blokeerib kutsuva lõime tingimusmuutujal cond ja avab lukud seotud mutex mutex . Kutsuv lõim peab olema lukustatud mutex enne tingimusmuutuja ootamist. Funktsioonist naastes mutex on jälle lukus ja kuulub kutsuvale lõimele.

Seejärel tekib küsimus, miks on mutexi vaja? See tagab, et ainult üks lõim täidab korraga võtmekoodi, mis omakorda piirab juurdepääsu andmestruktuurile. See tagab, et mõlemal lõimel on täielik ja korralik vaade sellest mälust, olenemata protsessori ümberkorraldamisest. The mutex on samaaegse programmeerimise puhul absoluutselt vajalik.

Miks vajavad tingimusmuutujad lisaks ülaltoodule mutexi?

The mutex on kasutatakse kaitsmiseks seisundi muutuja ise. Sellepärast sina vaja see lukustus teie ees teha ootamine. Siis, kui tingimuse muutuja on signaal või edastamine ühele või mitmele ootenimekirja lõimele tahe üles äratada ja mutex tahe olla selle lõime jaoks jälle võluväel lukus.

Miks me vajame tingimusmuutujaid?

Tingimuste muutujad lase niitide komplektil kõdistamiseni magada! Saate kõditada ühte või kõiki magavaid niite. Kui äratate ainult ühe lõime, otsustab operatsioonisüsteem, milline lõime äratada.

Soovitan: