typedef CComAutoCriticalSection AutoCriticalSection;
หมายเหตุ
เมื่อใช้CComMultiThreadModelชื่อtypedef AutoCriticalSectionคลาCComAutoCriticalSectionซึ่งมีวิธีการสำหรับการขอรับ และปล่อยความเป็นเจ้าของของวัตถุสำคัญส่วน อ้างอิง?
CComSingleThreadModelและCComMultiThreadModelNoCSยังประกอบด้วยคำนิยามสำหรับAutoCriticalSection ตารางต่อไปนี้แสดงความสัมพันธ์ระหว่างชั้นรุ่น threading และการอ้างอิงส่วนที่สำคัญของคลาสโดยAutoCriticalSection:
| คลาสที่กำหนดใน | คลาสที่อ้างอิงถึง |
| CComMultiThreadModel | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
นอกจากการAutoCriticalSectionคุณสามารถใช้ชื่อtypedef CriticalSection คุณไม่ควรระบุAutoCriticalSectionในส่วนกลางของวัตถุหรือสมาชิกของคลาสคงถ้าคุณต้องการกำจัดรหัสเริ่มต้นของจอภาพ CRT?
ตัวอย่าง
รหัสต่อไปนี้จะนำมาจากCComObjectRootEx?
templatelt คลา ThreadModel >
คลา CComObjectRootEx: CComObjectRootBase สาธารณะ
{
สาธารณะ:
typedef ThreadModel _ThreadModel
typedef _ThreadModel::AutoCriticalSection _CritSec
() InternalAddRef ULONG
{
...
กลับ _ThreadModel::Increment(&m_dwRef)
}
...
โมฆะ Lock () {m_critsecล็อก() }
...
ส่วนตัว:
_CritSec m_critsec
}
ตารางต่อไปนี้แสดงผลลัพธ์ของวิธีการInternalAddRefและLockขึ้นอยู่กับพารามิเตอร์แม่ThreadModelและแบบจำลอง threading ที่ใช้ โดยโปรแกรมประยุกต์:
ThreadModel = CComObjectThreadModel
| เดี่ยวหรืออพาร์ทเม้นท์ | ฟรี | |
| InternalAddRef | การเพิ่มไม่ด้ายเซฟ? | การเพิ่มเป็นเธรดเซฟ? |
| ล็อก | ไม่ได้เรื่อง ไม่มีส่วนสำคัญในการล็อก? | ส่วนที่สำคัญถูกล็อก? |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| เดี่ยวหรืออพาร์ทเม้นท์ | ฟรี | |
| InternalAddRef | การเพิ่มไม่ด้ายเซฟ? | การเพิ่มเป็นเธรดเซฟ? |
| ล็อก | ไม่ได้เรื่อง ไม่มีส่วนสำคัญในการล็อก? | ไม่ได้เรื่อง ไม่มีส่วนสำคัญในการล็อก? |
ภาพรวม CComMultiThreadModel |nbsp สมาชิกของคลาส(&N)
ดูเพิ่มเติมnbspCComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModelNoCS(&N)