Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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 increments 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.