CSemaphore

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

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

การใช้วัตถุCSemaphoreสร้างวัตถุCSemaphoreเมื่อจำเป็น ระบุชื่อของเซมาฟอร์คุณต้องการรอ และโปรแกรมประยุกต์ของคุณควรเริ่มต้นด้วยเองก็ คุณสามารถเข้าถึงเซมาฟอร์แล้วเมื่อส่งกลับค่าที่กำหนด โทรCSyncObject::Unlockเมื่อคุณดำเนินการทรัพยากรมีการควบคุมการเข้าถึง?

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

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

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

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

#รวม lt;afxmt.h>

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

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

Index