CComMultiThreadModel::AutoCriticalSection

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)

Index