เหตุใด Pthread_cond_wait จึงต้องการ mutex
เหตุใด Pthread_cond_wait จึงต้องการ mutex

วีดีโอ: เหตุใด Pthread_cond_wait จึงต้องการ mutex

วีดีโอ: เหตุใด Pthread_cond_wait จึงต้องการ mutex
วีดีโอ: C++ : Not locking mutex for pthread_cond_timedwait and pthread_cond_signal ( on Linux ) 2024, พฤศจิกายน
Anonim

NS mutex ใช้เพื่อป้องกันตัวแปรเงื่อนไขเอง นั่นเป็นเหตุผลที่คุณ ความต้องการ มันล็อคก่อนคุณ ทำ รอ จากนั้นเมื่อตัวแปรเงื่อนไขถูกส่งสัญญาณหรือแพร่ไปยัง เธรดในรายการรอหนึ่งรายการขึ้นไปจะถูกปลุกและ mutex จะถูกล็อคอย่างน่าอัศจรรย์อีกครั้งสำหรับเธรดนั้น

เกี่ยวกับเรื่องนี้ Pthread_cond_wait ปลดล็อก mutex หรือไม่

NS pthread_cond_wait () ฟังก์ชั่นบล็อกการเรียกเธรดบนเงื่อนไขตัวแปร cond และ ปลดล็อค ที่เกี่ยวข้อง มิวเท็กซ์ มิวเท็กซ์ . เธรดที่เรียกต้องถูกล็อค mutex ก่อนรอตัวแปรเงื่อนไข เมื่อกลับจากฟังก์ชัน mutex ถูกล็อคอีกครั้งและเป็นเจ้าของโดยเธรดการโทร

ต่อมา คำถามคือ ทำไมต้องใช้ mutex? จะทำให้แน่ใจว่ามีเพียงเธรดเดียวเท่านั้นที่รันโค้ดหลักในแต่ละครั้ง ซึ่งจะจำกัดการเข้าถึงโครงสร้างข้อมูล ช่วยให้มั่นใจได้ว่าเธรดทั้งสองมีมุมมองที่สมบูรณ์และเหมาะสมของหน่วยความจำนั้นโดยไม่คำนึงถึงการเรียงลำดับ CPU ใหม่ NS mutex เป็นสิ่งจำเป็นอย่างยิ่งเมื่อทำการเขียนโปรแกรมพร้อมกัน

ด้านบนนี้ เหตุใดตัวแปรเงื่อนไขจึงต้องการ mutex

NS mutex คือ ใช้ปกป้อง ตัวแปรเงื่อนไข ตัวเอง. นั่นเป็นเหตุผลที่คุณ ความต้องการ มันล็อคก่อนคุณ ทำ รอ แล้วเมื่อ ตัวแปรเงื่อนไข is ส่งสัญญาณหรือออกอากาศไปยังหนึ่งเธรดหรือมากกว่าในรายการรอ จะ ตื่นขึ้นและ mutex จะ ถูกล็อคอย่างน่าอัศจรรย์อีกครั้งสำหรับเธรดนั้น

ทำไมเราต้องมีตัวแปรเงื่อนไข?

ตัวแปรเงื่อนไข ปล่อยให้ชุดกระทู้นอนจนจั๊กจี้! คุณสามารถจี้หนึ่งเธรดหรือทุกเธรดที่อยู่ในโหมดสลีป หากคุณปลุกหนึ่งเธรด ระบบปฏิบัติการจะตัดสินใจว่าจะปลุกเธรดใด

แนะนำ: