อ่านเพิ่มเติม:
ฉันต้องการนำเสนอบทความบางส่วนของฉันซึ่งมีความสนใจในการทำข้อมูลเบื้องต้นเกี่ยวกับการซิงโครไนซ์ทั่วไปและพวกเขากำลังขุดลงใน Monitor พฤติกรรมคำสั่งล็อค C # คุณสมบัติและค่าใช้จ่ายขึ้นอยู่กับสถานการณ์ที่แตกต่างกันและจำนวนเธรด มีความสนใจเป็นพิเศษเกี่ยวกับการสิ้นเปลืองของ CPU และระยะเวลาทรูพุตเพื่อทำความเข้าใจว่าสามารถผลักดันงานผ่านสถานการณ์ต่างๆได้มากเพียงใด:
https://www.codeproject.com/Articles/1236238/Unified-Concurrency-I-Introduction
https://www.codeproject.com/Articles/1237518/Unified-Concurrency-II-benchmarking-methodologies
https: // www. codeproject.com/Articles/1242156/Unified-Concurrency-III-cross-benchmarking
คำตอบเดิม:
โอ้ที่รัก!
ดูเหมือนว่าคำตอบที่ถูกต้องถูกตั้งค่าสถานะไว้ที่นี่เนื่องจากคำตอบนั้นไม่ถูกต้องโดยเนื้อแท้! ฉันอยากจะขอให้ผู้เขียนตอบด้วยความเคารพที่จะอ่านบทความที่เชื่อมโยงจนจบ บทความ
ผู้เขียนบทความจากปี 2003 บทความได้รับการวัดบนเครื่อง Dual Core เท่านั้นและในกรณีที่วัดแรกเขาวัดล็อคกับหัวข้อเดียวเท่านั้นและผลที่ได้คือประมาณ 50ns ต่อการเข้าถึงล็อค
ไม่มีอะไรเกี่ยวกับการล็อคในสภาพแวดล้อมพร้อมกัน ดังนั้นเราต้องอ่านบทความต่อไปและในช่วงครึ่งหลังผู้เขียนกำลังวัดสถานการณ์การล็อกด้วยเธรดสองและสามเธรดซึ่งเข้าใกล้ระดับการทำงานพร้อมกันของโปรเซสเซอร์ในปัจจุบัน
ดังนั้นผู้เขียนจึงกล่าวว่าด้วยสองเธรดบน Dual Core การล็อคจะมีราคา 120ns และ 3 เธรดจะไปที่ 180ns ดังนั้นดูเหมือนว่าจะขึ้นอยู่กับจำนวนเธรดที่เข้าถึงล็อกพร้อมกันอย่างชัดเจน
ดังนั้นจึงเป็นเรื่องง่ายไม่ใช่ 50 ns เว้นแต่จะเป็นเธรดเดียวซึ่งการล็อคจะไร้ประโยชน์
อีกประเด็นที่ต้องพิจารณาคือวัดเป็นเวลาเฉลี่ย !
หากจะวัดเวลาในการทำซ้ำจะมีช่วงเวลาระหว่าง 1ms ถึง 20ms ด้วยซ้ำเพียงเพราะส่วนใหญ่เร็ว แต่มีเธรดเพียงไม่กี่เธรดที่รอเวลาโปรเซสเซอร์และอาจเกิดความล่าช้าเป็นเวลานานถึงมิลลิวินาที
นี่เป็นข่าวร้ายสำหรับแอปพลิเคชันทุกประเภทที่ต้องการปริมาณงานสูงเวลาแฝงต่ำ
และประเด็นสุดท้ายสำหรับการพิจารณาคืออาจมีการทำงานที่ช้าลงในตัวล็อคและมักจะเป็นเช่นนั้น ยิ่งบล็อกรหัสถูกดำเนินการภายในล็อคนานเท่าไหร่ความขัดแย้งก็ยิ่งสูงขึ้นและความล่าช้าก็เพิ่มสูงขึ้น
โปรดพิจารณาว่าเวลาผ่านไปกว่าหนึ่งทศวรรษแล้วนับจากปี 2546 ซึ่งเป็นโปรเซสเซอร์เพียงไม่กี่รุ่นที่ออกแบบมาโดยเฉพาะเพื่อให้ทำงานพร้อมกันได้อย่างสมบูรณ์และการล็อกก็ส่งผลเสียต่อประสิทธิภาพอย่างมาก