Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การหยุดชะงักและความอดอยากใน C #


การชะงักงันเกิดขึ้นเมื่อทรัพยากรถูกล็อคโดยเธรดและต้องการโดยเธรดอื่นในเวลาเดียวกัน ปัญหานี้เกิดขึ้นบ่อยครั้งในระบบมัลติโปรเซสเซอร์

อาจเกิดขึ้นได้เมื่อเธรดตั้งแต่สองเธรดขึ้นไปรอทรัพยากรที่อยู่ในเธรดอื่น นี่คือตัวอย่าง −

เธรดที่หนึ่ง กระทู้ที่สอง
ล็อค P ล็อค Q
ขอล็อก Q ขอล็อก P

เธรดที่หนึ่งจะไม่ได้รับ Lock Q เนื่องจากเป็นเธรดที่สอง ในทำนองเดียวกัน Thread Two จะไม่ได้รับ Lock P เนื่องจากเจ้าของเดิมคือ Thread One

การชะงักงันอาจเป็นการชะงักงันสามทางที่เกิดขึ้นได้หากสามเธรดและสามการล็อคเป็นเรื่องปกติ ในทำนองเดียวกัน มันสามารถเกิดขึ้นได้สำหรับสี่ทาง ห้าทาง และทางตันอื่นๆ

ความอดอยากเป็นการบล็อกถาวรของเธรดที่รันได้ตั้งแต่หนึ่งเธรดขึ้นไปในแอปพลิเคชันแบบมัลติเธรด