วีดีโอ: คุณจะหลีกเลี่ยงสภาวะการแข่งขันในเธรดได้อย่างไร?
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
เงื่อนไขการแข่งขัน สามารถหลีกเลี่ยงได้อย่างเหมาะสม เกลียว การซิงโครไนซ์ในส่วนที่สำคัญ เกลียว การซิงโครไนซ์สามารถทำได้โดยใช้บล็อกที่ซิงโครไนซ์ของ Java รหัส. เกลียว การซิงโครไนซ์สามารถทำได้โดยใช้โครงสร้างการซิงโครไนซ์อื่น ๆ เช่นล็อคหรือตัวแปรอะตอมเช่น จาวา.
คล้าย ๆ กัน มีคนถามว่า เราต้องป้องกันสภาพการแข่งขันอย่างไร?
ถึง หลีกเลี่ยงสภาพการแข่งขันที่เราต้องการ การยกเว้นร่วมกัน Mutual Exclusion เป็นวิธีการบางอย่างเพื่อให้แน่ใจว่าหากกระบวนการหนึ่งใช้ตัวแปรหรือไฟล์ที่ใช้ร่วมกัน กระบวนการอื่น จะ ถูกแยกออกจาก ทำ สิ่งเดียวกัน.
ต่อจากนั้น คำถามคือ มีกี่กระบวนการที่ได้รับอนุญาตในส่วนที่สำคัญของพวกเขา หากสภาวะการแข่งขันถูกป้องกันไม่ให้เกิดขึ้น? หลีกเลี่ยง สภาพการแข่งขัน , การยกเว้นร่วมกันจะต้องบังคับใช้ภายใน ส่วนที่สำคัญ . ห้ามมากกว่าหนึ่ง กระบวนการ จากการเข้าถึงหน่วยความจำที่ใช้ร่วมกันในเวลาเดียวกัน ถ้า ไม่มีสอง กระบวนการ เข้าสู่ ส่วนที่สำคัญของพวกเขา ในเวลาเดียวกัน ไม่ สภาพการแข่งขัน.
นอกจากนี้ ยังทราบด้วยว่าสภาพการแข่งขันในเธรดคืออะไร
NS สภาพการแข่งขัน เกิดขึ้นเมื่อสองคนขึ้นไป กระทู้ สามารถเข้าถึงข้อมูลที่แชร์และพยายามเปลี่ยนข้อมูลพร้อมกัน เพราะว่า เกลียว อัลกอริทึมการตั้งเวลาสามารถสลับระหว่าง กระทู้ ในเวลาใด ๆ คุณไม่ทราบลำดับที่ กระทู้ จะพยายามเข้าถึงข้อมูลที่แชร์
สภาพการแข่งขันคืออะไร ยกตัวอย่าง?
ง่ายๆ ตัวอย่าง ของ สภาพการแข่งขัน เป็นสวิตช์ไฟ ในบ้านบางหลังมีสวิตช์ไฟหลายตัวที่เชื่อมต่อกับไฟเพดานทั่วไป เมื่อใช้วงจรประเภทนี้ ตำแหน่งสวิตช์จะไม่เกี่ยวข้อง หากไฟเปิดอยู่ การเลื่อนสวิตช์จากตำแหน่งปัจจุบันจะปิดไฟ