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.

See Also

Class Overview