このクラスには、変数の値をインクリメントおよびデクリメントするためのメソッドが用意されています。
構文
class CComSingleThreadModel
メンバー
パブリック typedef
| 名前 | 説明 |
|---|---|
| CComSingleThreadModel::AutoCriticalSection | CComFakeCriticalSection クラスを参照します。 |
| CComSingleThreadModel::CriticalSection | CComFakeCriticalSection クラスを参照します。 |
| CComSingleThreadModel::ThreadModelNoCS | CComSingleThreadModel を参照します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
| CComSingleThreadModel::Decrement | 指定された変数の値をデクリメントします。 この実装はスレッドセーフではありません。 |
| CComSingleThreadModel::Increment | 指定された変数の値をインクリメントします。 この実装はスレッドセーフではありません。 |
解説
CComSingleThreadModel には、変数の値をインクリメントおよびデクリメントするためのメソッドが用意されています。 CComMultiThreadModel や CComMultiThreadModelNoCS とは異なり、これらのメソッドはスレッドセーフではありません。
通常、CComSingleThreadModel を使用するには、2 つの typedef 名のうち 1 つ (CComObjectThreadModel または CComGlobalsThreadModel のどちらか) を使用します。 各 typedef で参照されるクラスは、次の表に示すように、使うスレッド モデルに依存します。
| typedef | 単一スレッド モデル | アパートメント スレッド モデル | フリー スレッド モデル |
|---|---|---|---|
CComObjectThreadModel |
S | S | 月 |
CComGlobalsThreadModel |
S | 月 | 月 |
S= CComSingleThreadModel、M= CComMultiThreadModel
CComSingleThreadModel 自体に 3 つの typedef 名が定義されています。 ThreadModelNoCS関連項目CComSingleThreadModel。 AutoCriticalSection と CriticalSection はクラス CComFakeCriticalSection を参照します。これは、クリティカル セクションの所有権の取得と解放に関連付けられた空のメソッドを備えています。
要件
ヘッダー: atlbase.h
CComSingleThreadModel::AutoCriticalSection
CComSingleThreadModel を使用する場合、typedef 名である AutoCriticalSection で参照されるのは、CComFakeCriticalSection クラスです。
typedef CComFakeCriticalSection AutoCriticalSection;
解説
CComFakeCriticalSection によってクリティカル セクションは提供されないため、そのメソッドでは何も行われません。
CComMultiThreadModel および CComMultiThreadModelNoCS には、AutoCriticalSection の定義が含まれています。 次の表は、スレッド モデル クラスと、AutoCriticalSection によって参照されるクリティカル セクション クラスとのリレーションシップを示しています。
| 定義されるクラス | 参照されるクラス |
|---|---|
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModel |
CComAutoCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
AutoCriticalSection に加えて、typedef 名として CriticalSection を使用することもできます。 CRT スタートアップ コードを削除する場合は、グローバル オブジェクトまたは静的クラス メンバーで AutoCriticalSection を指定しないでください。
例
「CComMultiThreadModel::AutoCriticalSection」を参照してください。
CComSingleThreadModel::CriticalSection
CComSingleThreadModel を使用する場合、typedef 名である CriticalSection で参照されるのは、CComFakeCriticalSection クラスです。
typedef CComFakeCriticalSection CriticalSection;
解説
CComFakeCriticalSection によってクリティカル セクションは提供されないため、そのメソッドでは何も行われません。
CComMultiThreadModel および CComMultiThreadModelNoCS には、CriticalSection の定義が含まれています。 次の表は、スレッド モデル クラスと、CriticalSection によって参照されるクリティカル セクション クラスとのリレーションシップを示しています。
| 定義されるクラス | 参照されるクラス |
|---|---|
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModel |
CComCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CriticalSection に加えて、typedef 名として AutoCriticalSection を使用することもできます。 CRT スタートアップ コードを削除する場合は、グローバル オブジェクトまたは静的クラス メンバーで AutoCriticalSection を指定しないでください。
例
「CComMultiThreadModel::AutoCriticalSection」を参照してください。
CComSingleThreadModel::Decrement
この静的関数は、p が指す変数の値をデクリメントします。
static ULONG WINAPI Decrement(LPLONG p) throw();
パラメーター
P
[入力] デクリメントする変数を指すポインター。
戻り値
デクリメントの結果。
CComSingleThreadModel::Increment
この静的関数は、p が指す変数の値をインクリメントします。
static ULONG WINAPI Increment(LPLONG p) throw();
パラメーター
P
[入力] インクリメントする変数を指すポインター。
戻り値
インクリメントの結果。
CComSingleThreadModel::ThreadModelNoCS
CComSingleThreadModel を使用する場合、typedef 名である ThreadModelNoCS によって参照されるのは、CComSingleThreadModel だけです。
typedef CComSingleThreadModel ThreadModelNoCS;
解説
CComMultiThreadModel および CComMultiThreadModelNoCS には、ThreadModelNoCS の定義が含まれています。 次の表は、スレッド モデル クラスと、ThreadModelNoCS によって参照されるクラスとのリレーションシップを示しています。
| 定義されるクラス | 参照されるクラス |
|---|---|
CComSingleThreadModel |
CComSingleThreadModel |
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
例
「CComMultiThreadModel::AutoCriticalSection」を参照してください。