CComMultiThreadModel::AutoCriticalSection

typeDef CComAutoCriticalSection AutoCriticalSection;

Observações

Ao usar CComMultiThreadModel, a typedef nome AutoCriticalSection referências classe CComAutoCriticalSection, que fornece métodos para obter e liberando a propriedade de um objeto de seção crítica.

CComSingleThreadModel e CComMultiThreadModelNoCS também contêm definições para AutoCriticalSection. A tabela a seguir mostra a relação entre a classe de modelo de threading e a referência de classe de seção crítica por AutoCriticalSection:

Classe definida no Classe referenciada
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

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

Exemplo

O código a seguir é tirado de CComObjectRootEx.

templatelt; Classe ThreadModel >
Classe CComObjectRootEx: CComObjectRootBase pública
{
público:
   TypeDef ThreadModel _ThreadModel;
   TypeDef _ThreadModel::AutoCriticalSection _CritSec;

ULONG InternalAddRef)
   {
      ...
      retornar _ThreadModel::Increment(&m_dwRef);
   }
   ...
   privatevoid Lock () {m_critsec.Bloqueio (); }
   ...

privado:
   _CritSec m_critsec;

}

As tabelas a seguir mostram os resultados dos métodos InternalAddRef e bloqueio , dependendo do parâmetro do modelo ThreadModel e o modelo de threading usado pelo aplicativo:

ThreadModel = CComObjectThreadModel

Único ou Apartamento Grátis
InternalAddRef O incremento não é thread-safe. O incremento é thread-safe.
Bloqueio Não faz nada; não há nenhum crítico seção para bloquear. Seção crítica está bloqueada.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Único ou Apartamento Grátis
InternalAddRef O incremento não é thread-safe. O incremento é thread-safe.
Bloqueio Não faz nada; não há nenhum crítico seção para bloquear. Não faz nada; não há nenhum crítico seção para bloquear.

CComMultiThreadModel visão geralMembros de classe

Consulte tambémnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS

Index