CCriticalSection

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

ส่วนสำคัญจะใช้แทน mutexes เมื่อความเร็วเป็นสิ่งสำคัญ และจะสามารถใช้ทรัพยากรข้ามพรมแดนของกระบวนการไม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ mutexes ใน MFC, CMutex?

การใช้วัตถุCCriticalSectionสร้างวัตถุCCriticalSectionเมื่อจำเป็น จากนั้นคุณสามารถเข้าถึงส่วนสำคัญเมื่อพารามิเตอร์ที่ส่งกลับ เรียกการปลดล็อกเมื่อคุณเสร็จสิ้นการเข้าถึงส่วนสำคัญ?

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

อีกวิธีหนึ่งคือ คุณสามารถสร้างวัตถุCCriticalSection stand-alone และเข้าถึงได้อย่างชัดเจนก่อนที่จะเข้าถึงทรัพยากรที่ควบคุม เป็นวิธีการนี้ ในขณะที่ clearer ไปยังผู้อ่านโค้ดต้นฉบับของคุณ มากเสี่ยงข้อผิดพลาดขณะที่คุณต้องจำไว้ว่า ให้ล็อก และส่วนสำคัญในการปลดล็อกก่อน และ หลังการเข้า?

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้วัตถุCCriticalSectionให้ดูบทความ Multithreading: วิธีการซิงโครไนส์คลาสที่ใช้ในVisual c ++ Programmer ของคำแนะนำ?

#รวม lt;afxmt.h>

สมาชิกของคลาส|nbsp คลาสพื้นฐาน| แผนภูมิของลำดับชั้น(&N)

ตัวอย่างnbsp MFC อย่าง MTGDI(&N)

ดูเพิ่มเติมnbspCMutex(&N)

Index