Partilhar via


Classe CComMultiThreadModelNoCS

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

CComMultiThreadModelNoCS fornece métodos thread-safe para incrementar e decrementar o valor de uma variável, sem funcionalidade crítica de bloqueio ou desbloqueio de secções.

Sintaxe

class CComMultiThreadModelNoCS

Membros

Definições de Tipos Públicas

Nome Description
CComMultiThreadModelNoCS::AutoCriticalSection Classe de referências CComFakeCriticalSection.
CComMultiThreadModelNoCS::Secção Crítica Classe CComFakeCriticalSectionde referências .
CComMultiThreadModelNoCS::ThreadModelNoCS Classe CComMultiThreadModelNoCSde referências .

Métodos Públicos

Nome Description
CComMultiThreadModelNoCS::D ecrement (Estática) Diminui o valor da variável especificada de forma segura para threads.
CComMultiThreadModelNoCS::Increment (Estática) Incrementa o valor da variável especificada de forma segura para threads.

Observações

CComMultiThreadModelNoCS é semelhante ao CComMultiThreadModel no sentido em que fornece métodos thread-safe para incrementar e decrementar uma variável. No entanto, quando referencias uma classe de secção crítica através de CComMultiThreadModelNoCS, métodos como Lock e Unlock não fazem nada.

Normalmente, usa-se CComMultiThreadModelNoCS através do ThreadModelNoCStypedef nome. Isto typedef é definido em CComMultiThreadModelNoCS, CComMultiThreadModel, e CComSingleThreadModel.

Observação

Os nomes globais typedefCComObjectThreadModel e CComGlobalsThreadModel não fazem referência CComMultiThreadModelNoCSa .

Além de ThreadModelNoCS, CComMultiThreadModelNoCS define AutoCriticalSection e CriticalSection. Estes dois typedef últimos nomes fazem referência ao CComFakeCriticalSection, que fornece métodos vazios associados à obtenção e libertação de uma secção crítica.

Requerimentos

Cabeçalho: atlbase.h

CComMultiThreadModelNoCS::AutoCriticalSection

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

typedef CComFakeCriticalSection AutoCriticalSection;

Observações

Como CComFakeCriticalSection não fornece uma secção crítica, os seus métodos não fazem nada.

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

Classe definida em Classe referida
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Além de AutoCriticalSection, pode usar o typedef nome Secção Crítica. Não deve especificar AutoCriticalSection em objetos globais ou membros estáticos da classe se quiser eliminar o código de arranque do CRT.

Example

Veja CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::Secção Crítica

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

typedef CComFakeCriticalSection CriticalSection;

Observações

Como CComFakeCriticalSection não fornece uma secção crítica, os seus métodos não fazem nada.

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

Classe definida em Classe referida
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Além de CriticalSection, pode usar o typedef nome AutoCriticalSection. Não deve especificar AutoCriticalSection em objetos globais ou membros estáticos da classe se quiser eliminar o código de arranque do CRT.

Example

Veja CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::D ecrement

Esta função estática chama à função Win32 InterlockedDecrement, que decremente o valor da variável apontada por p.

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

Parâmetros

p
[dentro] Apontar para a variável a decrementar.

Valor de retorno

Se o resultado da decremento for 0, então Decrement retorna 0. Se o resultado do decremento for diferente de zero, o valor de retorno também é diferente de zero, mas pode não ser igual ao resultado do decremento.

Observações

InterlockedDecrement impede que mais do que um thread use simultaneamente esta variável.

CComMultiThreadModelNoCS::Increment

Esta função estática chama a função Win32 InterlockedIncrement, que incrementa o valor da variável apontada por p.

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

Parâmetros

p
[dentro] Apontar para a variável a ser incrementada.

Valor de retorno

Se o resultado do incremento for 0, então o incremento devolve 0. Se o resultado do incremento for diferente de zero, o valor de retorno também é diferente de zero, mas pode não ser igual ao resultado do incremento.

Observações

O InterlockedIncrement impede que mais do que um thread use simultaneamente esta variável.

CComMultiThreadModelNoCS::ThreadModelNoCS

Ao usar CComMultiThreadModelNoCS, o typedef nome ThreadModelNoCS simplesmente faz referência CComMultiThreadModelNoCSa .

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

Observações

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

Classe definida em Classe referida
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

Note-se que a definição de ThreadModelNoCS em CComMultiThreadModelNoCS fornece simetria com CComMultiThreadModel e CComSingleThreadModel. Por exemplo, suponha que o código de exemplo em CComMultiThreadModel::AutoCriticalSection declara o seguinte typedef:

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

Independentemente da classe especificada para ThreadModel (como CComMultiThreadModelNoCS), _ThreadModel resolve em conformidade.

Example

Veja CComMultiThreadModel::AutoCriticalSection.

Consulte também

Visão geral da classe