คำถามติดแท็ก synchronization

3
อัลกอริทึมของ Peterson และ Dekker ที่ตัดกัน
ฉันพยายามที่จะเข้าใจอัลกอริทึมของ Peterson และ Dekker ซึ่งคล้ายกันมากและแสดงความสมมาตรมากมาย ฉันพยายามกำหนดอัลกอริทึมในภาษานอกระบบดังนี้: Peterson's: "I want to enter." flag[0]=true; "You can enter next." turn=1; "If you want to enter and while(flag[1]==true&&turn==1){ it's your turn I'll wait." } Else: Enter CS! // CS "I don't want to enter any more." flag[0]=false; Dekker's: "I want to enter." flag[0]=true; "If …

1
มีการใช้งานล็อคฮาร์ดแวร์โดยไม่ต้องทดสอบและตั้งค่าหรือแลกเปลี่ยน?
โดยทั่วไปแล้วล็อกจะถูกนำไปใช้ผ่านคำแนะนำการทดสอบและตั้งค่าและสลับระดับเครื่อง มีการนำไปใช้งานอื่น ๆ ที่ไม่ได้ใช้สิ่งเหล่านี้หรือไม่? นอกจากนี้เราสามารถพูดได้หรือไม่ว่าโซลูชั่นระดับฮาร์ดแวร์ทั้งหมดสำหรับปัญหาส่วนที่สำคัญสามารถแบ่งได้เป็นสามส่วนคือการปิดใช้งานการขัดจังหวะการทดสอบและตั้งค่าและการสลับ?

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

3
ทำไมการใช้งาน mutex ส่วนใหญ่จึงไม่ยุติธรรม?
ความเข้าใจของฉันคือการใช้งาน mutex ที่นิยมมากที่สุด (เช่น std :: mutex ใน C ++) ไม่รับประกันความเป็นธรรม - นั่นคือพวกเขาไม่รับประกันว่าในกรณีของการช่วงชิงการล็อคจะถูกรับโดยเธรดตามลำดับที่พวกเขา เรียกว่าล็อค () ในความเป็นจริงมันเป็นไปได้ (แม้จะหวังว่าผิดปกติ) ว่าในกรณีที่มีการโต้แย้งสูงบางกระทู้ที่รอรับ mutex อาจไม่เคยได้รับ นี่ดูเหมือนว่าพฤติกรรมที่ไม่ช่วยเหลือฉัน - ดูเหมือนว่า mutex ที่ยุติธรรมจะให้ผลการทำงานที่สอดคล้องกับสิ่งที่โปรแกรมเมอร์ต้องการ / คาดหวัง เหตุผลที่กำหนดว่าทำไมโดยทั่วไปแล้วการใช้งาน mutex จะไม่ถูกนำมาใช้เพื่อความยุติธรรมคือ "ประสิทธิภาพ" แต่ฉันต้องการทำความเข้าใจให้ดีขึ้นว่าอะไรคือความหมาย - โดยเฉพาะอย่างยิ่งการผ่อนคลายข้อกำหนดความเป็นธรรมของ mutex จะปรับปรุงประสิทธิภาพอย่างไร ดูเหมือนว่า mutex ที่ "ยุติธรรม" จะใช้งานได้ง่ายเพียงแค่มี lock () ต่อท้ายเธรดการเรียกไปยังส่วนท้ายของรายการที่เชื่อมโยงของ mutex ก่อนที่จะวางเธรดเข้าสู่โหมดสลีปแล้วปลดล็อก () ป๊อปเธรดถัดไปจาก หัวของรายการเดียวกันนั้นและปลุกมันขึ้นมา ฉันขาดความเข้าใจในการใช้งาน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.