CComSingleThreadModel Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CComSingleThreadModel Class.
This class provides methods for incrementing and decrementing the value of a variable.
Syntax
class CComSingleThreadModel
Members
Public Typedefs
Name | Description |
---|---|
CComSingleThreadModel::AutoCriticalSection | References class CComFakeCriticalSection. |
CComSingleThreadModel::CriticalSection | References class CComFakeCriticalSection . |
CComSingleThreadModel::ThreadModelNoCS | References CComSingleThreadModel . |
Public Methods
Name | Description |
---|---|
CComSingleThreadModel::Decrement | Decrements the value of the specified variable. This implementation is not thread-safe. |
CComSingleThreadModel::Increment | Increments the value of the specified variable. This implementation is not thread-safe. |
Remarks
CComSingleThreadModel
provides methods for incrementing and decrementing the value of a variable. Unlike CComMultiThreadModel and CComMultiThreadModelNoCS, these methods are not thread-safe.
Typically, you use CComSingleThreadModel
through one of two typedef
names, either CComObjectThreadModel or CComGlobalsThreadModel. The class referenced by each typedef
depends on the threading model used, as shown in the following table:
typedef | Single threading model | Apartment threading model | Free threading model |
---|---|---|---|
CComObjectThreadModel |
S | S | M |
CComGlobalsThreadModel |
S | M | M |
S= CComSingleThreadModel
; M= CComMultiThreadModel
CComSingleThreadModel
itself defines three typedef
names. ThreadModelNoCS
references CComSingleThreadModel
. AutoCriticalSection
and CriticalSection
reference class CComFakeCriticalSection, which provides empty methods associated with obtaining and releasing ownership of a critical section.
Requirements
Header: atlbase.h
CComSingleThreadModel::AutoCriticalSection
When using CComSingleThreadModel
, the typedef
name AutoCriticalSection
references class CComFakeCriticalSection.
typedef CComFakeCriticalSection AutoCriticalSection;
Remarks
Because CComFakeCriticalSection
does not provide a critical section, its methods do nothing.
CComMultiThreadModel and CComMultiThreadModelNoCS contain definitions for AutoCriticalSection
. The following table shows the relationship between the threading model class and the critical section class referenced by AutoCriticalSection
:
Class defined in | Class referenced |
---|---|
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModel |
CComAutoCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
In addition to AutoCriticalSection
, you can use the typedef
name CriticalSection. You should not specify AutoCriticalSection
in global objects or static class members if you want to eliminate the CRT startup code.
Example
See CComMultiThreadModel::AutoCriticalSection.
CComSingleThreadModel::CriticalSection
When using CComSingleThreadModel
, the typedef
name CriticalSection
references class CComFakeCriticalSection.
typedef CComFakeCriticalSection CriticalSection;
Remarks
Because CComFakeCriticalSection
does not provide a critical section, its methods do nothing.
CComMultiThreadModel and CComMultiThreadModelNoCS contain definitions for CriticalSection
. The following table shows the relationship between the threading model class and the critical section class referenced by CriticalSection
:
Class defined in | Class referenced |
---|---|
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModel |
CComCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
In addition to CriticalSection
, you can use the typedef
name AutoCriticalSection. You should not specify AutoCriticalSection
in global objects or static class members if you want to eliminate the CRT startup code.
Example
See CComMultiThreadModel::AutoCriticalSection.
CComSingleThreadModel::Decrement
This static function decrements the value of the variable pointed to by p
.
static ULONG WINAPI Decrement(LPLONG p) throw ();
Parameters
p
[in] Pointer to the variable to be decremented.
Return Value
The result of the decrement.
CComSingleThreadModel::Increment
This static function decrements the value of the variable pointed to by p
.
static ULONG WINAPI Increment(LPLONG p) throw ();
Parameters
p
[in] Pointer to the variable to be incremented.
Return Value
The result of the increment.
CComSingleThreadModel::ThreadModelNoCS
When using CComSingleThreadModel
, the typedef
name ThreadModelNoCS
simply references CComSingleThreadModel
.
typedef CComSingleThreadModel ThreadModelNoCS;
Remarks
CComMultiThreadModel and CComMultiThreadModelNoCS contain definitions for ThreadModelNoCS
. The following table shows the relationship between the threading model class and the class referenced by ThreadModelNoCS
:
Class defined in | Class referenced |
---|---|
CComSingleThreadModel |
CComSingleThreadModel |
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
Example
See CComMultiThreadModel::AutoCriticalSection.