ฉันได้ศึกษา The Art of Multiprocessor Programming 1และข้อความของพวกเขาขาดความชัดเจนเช่นเดียวกับหนังสือที่คุณอ้างถึง นี่คือคำพูดจาก TAMPP:
อ้างอิง 1 (คำจำกัดความของล็อคฟรี)
วิธีการล็อคฟรีถ้ามันรับประกันว่ามักจะเรียกวิธีการบางอย่างเสร็จสิ้นในขั้นตอนจำนวน จำกัด
อ้างอิง 2 (ความหมายของการไม่บล็อก)
การร้องขอที่รอดำเนินการของวิธีการทั้งหมดไม่จำเป็นต้องรอให้การร้องขอที่รอดำเนินการอื่นเสร็จสิ้น
ใบเสนอราคา 3 (อ้างว่าล็อคฟรีไม่ใช่การปิดกั้น)
เงื่อนไขความคืบหน้าการไม่บล็อกการล็อคที่ปราศจากการรอและปราศจากล็อครับประกันได้ว่าการคำนวณโดยรวมทำให้เกิดความคืบหน้าโดยไม่ขึ้นกับว่าระบบจะจัดตารางเธรด
ปัญหาคือว่าการอ้างสิทธิ์ในใบเสนอราคา 3 ไม่ชัดเจนตามจากคำจำกัดความในใบเสนอราคา 1 ดังที่กล่าวไปแล้วคิวที่ซิงโครไนซ์ดูเหมือนจะตอบสนองใบเสนอราคา 1: บ่อยครั้งที่บางวิธีจะสำเร็จแล้ว
หมายเหตุเฉพาะวลีที่ค่อนข้างคลุมเครือในใบเสนอราคา 3: "เป็นอิสระจากการที่ระบบจัดตารางเวลาเธรด" สิ่งนี้ไม่ได้นำหน้าด้วยคำอธิบายอย่างเป็นทางการใด ๆ ของ "ระบบการจัดตารางเวลาเธรด" ดังนั้นเราจึงปล่อยให้สร้างคุณสมบัติขึ้นใหม่ตามความเห็นของเราเกี่ยวกับคำจำกัดความที่ควรมีความหมาย:
- ระบบรันคำสั่งของเธรดบางตัวเสมอ;
- มันอาจไม่รันคำสั่งของเธรดที่กำหนดใด ๆ
- กระทู้ทั้งหมดจะถูกเรียกใช้วิธีการภายใต้การพิจารณา
ในระบบดังกล่าววิธีการบล็อกไม่สามารถล็อคได้ฟรี: หากเธรดที่ถือล็อคไม่ได้ถูกกำหนดเวลาไว้สำหรับการดำเนินการอีกครั้งจะไม่มีเธรดอื่นที่สามารถดำเนินการตามวิธีการให้เสร็จสิ้นในจำนวนขั้นตอนที่ จำกัด แต่จะมี เธรดบางตัวที่ใช้งานขั้นตอนของวิธีการ สำหรับระบบที่สมจริงยิ่งขึ้นระบบที่รับประกันว่าจะให้เวลา CPU แก่แต่ละเธรดในที่สุดคำจำกัดความต้องรวมคุณสมบัติที่ไม่บล็อกไว้อย่างชัดเจน:
คำจำกัดความที่ถูกต้องของล็อคฟรี
วิธีนี้ไม่มีการล็อคถ้ามันไม่ได้ปิดกั้นและนอกจากนี้ยังรับประกันได้ว่าบ่อยครั้งที่การเรียกใช้เมธอดบางอย่างเสร็จสิ้นในขั้นตอนจำนวน จำกัด
1 Maurice Herlihy, Nir Shavit, ศิลปะการเขียนโปรแกรมแบบหลายโปรเซสเซอร์, Elsevier 2008, pp. 58-60