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 geral | Membros de classe
Consulte tambémnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS