typedef CComAutoCriticalSection AutoCriticalSection;
解説
CComMultiThreadModelを使用する場合、クラスCComAutoCriticalSection取得のクリティカル セクション オブジェクトの所有権を解放するメソッドを提供、 typedef名AutoCriticalSectionを参照します。
またCComSingleThreadModelとCComMultiThreadModelNoCS AutoCriticalSectionの定義が含まれます。スレッド モデルのクラスと、クリティカル セクション クラス参照AutoCriticalSectionの関係を次に示します:
| クラスの定義 | クラスの参照 |
| CComMultiThreadModel | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
AutoCriticalSectionに加え、 typedef名CriticalSectionを使用することができます。CRT スタートアップ コードを削除する場合、 AutoCriticalSectionグローバル オブジェクトや静的クラス メンバーを指定しないでください。
例
次のコードはCComObjectRootExから取られる。
templatelt;クラスの ThreadModel >CComObjectRootEx クラス: パブリック CComObjectRootBase{パブリック。typedef ThreadModel _ThreadModel;typedef _ThreadModel::AutoCriticalSection _CritSec;ULONG InternalAddRef){..._ThreadModel::Increment(&m_dwRef) を返す;}...void ロック () {m_critsec。ロック ();}...プライベート。_CritSec m_critsec;}
次の表、 ThreadModelテンプレート パラメーターと、アプリケーションで使用するスレッド モデルに応じて、 InternalAddRefとロックメソッドの結果を表示します。:
ThreadModel = CComObjectThreadModel
| 1 つまたはアパート | 無料 | |
| InternalAddRef | 増分スレッド セーフではありません。 | スレッド セーフなインクリメントです。 |
| ロック | 何もしない;ロックするクリティカル セクションがないです。 | クリティカル セクションがロックされています。 |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| 1 つまたはアパート | 無料 | |
| InternalAddRef | 増分スレッド セーフではありません。 | スレッド セーフなインクリメントです。 |
| ロック | 何もしない;ロックするクリティカル セクションがないです。 | 何もしない;ロックするクリティカル セクションがないです。 |
CComMultiThreadModel 概要|nbsp;クラス メンバー(&N)
参照特価;CComObjectThreadModel、 CComGlobalsThreadModel、 CComMultiThreadModel::ThreadModelNoCS(&N)