Compartilhar via


Classe CComSingleThreadModel

Essa classe fornece métodos para incrementar e decrementar o valor de uma variável.

Sintaxe

class CComSingleThreadModel

Membros

Typedefs públicos

Nome Descrição
CComSingleThreadModel::AutoCriticalSection Classe de referências CComFakeCriticalSection.
CComSingleThreadModel::CriticalSection Classe de referência CComFakeCriticalSection.
CComSingleThreadModel::ThreadModelNoCS Referências CComSingleThreadModel.

Métodos públicos

Nome Descrição
CComSingleThreadModel::Decrement Diminui o valor da variável especificada. Essa implementação não é thread-safe.
CComSingleThreadModel::Increment Incrementa o valor da variável especificada. Essa implementação não é thread-safe.

Comentários

CComSingleThreadModel fornece métodos para incrementar e decrementar o valor de uma variável. Ao contrário de CComMultiThreadModel e CComMultiThreadModelNoCS, esses métodos não são thread-safe.

Normalmente, você usa CComSingleThreadModel por meio de um dos dois typedef nomes, CComObjectThreadModel ou CComGlobalsThreadModel. A classe referenciada para cada typedef depende do modelo de threading usado, conforme mostrado na tabela a seguir:

typedef Modelo de threading simples Modelo de threading de acomodações Modelo de threading livre
CComObjectThreadModel S S M
CComGlobalsThreadModel S M M

S= CComSingleThreadModel; M= CComMultiThreadModel

CComSingleThreadModel em si define três nomes typedef. ThreadModelNoCS faz referência a CComSingleThreadModel. AutoCriticalSection e CriticalSection referenciam a classe CComFakeCriticalSection, que fornece métodos vazios associados à obtenção e liberação da propriedade de uma seção crítica.

Requisitos

Cabeçalho: atlbase.h

CComSingleThreadModel::AutoCriticalSection

Ao usar CComSingleThreadModel, o nome typedef AutoCriticalSection faz referência à classe CComFakeCriticalSection.

typedef CComFakeCriticalSection AutoCriticalSection;

Comentários

Por CComFakeCriticalSection não fornecer uma seção crítica, seus métodos não fazem nada.

CComMultiThreadModel e CComMultiThreadModelNoCS contêm definições para AutoCriticalSection. A seguinte tabela mostra a relação entre a classe de modelo de threading e a classe de seção crítica referenciada por AutoCriticalSection:

Classe definida em Classe referenciada
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

Além de AutoCriticalSection, você pode usar o nome typedef CriticalSection. Você não deverá especificar AutoCriticalSection em objetos globais ou membros de classe estática se quiser eliminar o código de inicialização CRT.

Exemplo

Confira CComMultiThreadModel::AutoCriticalSection.

CComSingleThreadModel::CriticalSection

Ao usar CComSingleThreadModel, o nome typedef CriticalSection faz referência à classe CComFakeCriticalSection.

typedef CComFakeCriticalSection CriticalSection;

Comentários

Por CComFakeCriticalSection não fornecer uma seção crítica, seus métodos não fazem nada.

CComMultiThreadModel e CComMultiThreadModelNoCS contêm definições para CriticalSection. A seguinte tabela mostra a relação entre a classe de modelo de threading e a classe de seção crítica referenciada por CriticalSection:

Classe definida em Classe referenciada
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

Além de CriticalSection, você pode usar o nome typedef AutoCriticalSection. Você não deverá especificar AutoCriticalSection em objetos globais ou membros de classe estática se quiser eliminar o código de inicialização CRT.

Exemplo

Confira CComMultiThreadModel::AutoCriticalSection.

CComSingleThreadModel::Decrement

Essa função estática decrementa o valor da variável apontada por p.

static ULONG WINAPI Decrement(LPLONG p) throw();

Parâmetros

p
[entrada] Ponteiro para a variável a ser decrementada.

Valor de retorno

O resultado do decremento.

CComSingleThreadModel::Increment

Essa função estática incrementa o valor da variável apontada por p.

static ULONG WINAPI Increment(LPLONG p) throw();

Parâmetros

p
[entrada] Ponteiro para a variável a ser incrementada.

Valor de retorno

O resultado do incremento.

CComSingleThreadModel::ThreadModelNoCS

Ao usar CComSingleThreadModel, o nome typedef ThreadModelNoCS simplesmente faz referência a CComSingleThreadModel.

typedef CComSingleThreadModel ThreadModelNoCS;

Comentários

CComMultiThreadModel e CComMultiThreadModelNoCS contêm definições para ThreadModelNoCS. A seguinte tabela mostra a relação entre a classe de modelo de threading e a classe referenciada por ThreadModelNoCS:

Classe definida em Classe referenciada
CComSingleThreadModel CComSingleThreadModel
CComMultiThreadModel CComMultiThreadModelNoCS
CComMultiThreadModelNoCS CComMultiThreadModelNoCS

Exemplo

Confira CComMultiThreadModel::AutoCriticalSection.

Confira também

Visão geral da aula