CComMultiThreadModel::AutoCriticalSection
Ao usar CComMultiThreadModel, o typedef nome AutoCriticalSection referências de classe CComAutoCriticalSection, que fornece métodos para obter e liberação de propriedade de um objeto de seção crítica.
typedef CComAutoCriticalSection AutoCriticalSection;
Comentários
CComSingleThreadModel and CComMultiThreadModelNoCS também contêm definições de AutoCriticalSection. A tabela a seguir mostra a relação entre a classe de modelo de threading e a classe de seção crítica referenciados por AutoCriticalSection:
Classe definida em |
Classe referenciado |
---|---|
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
Em adição a AutoCriticalSection, você pode usar o typedef nome CriticalSection.Você não deve especificar AutoCriticalSection em objetos global ou membros da classe estática para eliminar o código de inicialização do CRT.
Exemplo
O código a seguir é modelado CComObjectRootExe demonstra AutoCriticalSection que está sendo usado em um ambiente de threading.
template< class ThreadModel >
class CMyAutoCritClass
{
public:
typedef ThreadModel _ThreadModel;
typedef typename _ThreadModel::AutoCriticalSection _CritSec;
CMyAutoCritClass() : m_dwRef(0) {}
ULONG InternalAddRef()
{
return _ThreadModel::Increment(&m_dwRef);
}
ULONG InternalRelease()
{
return _ThreadModel::Decrement(&m_dwRef);
}
void Lock() { m_critsec.Lock( ); }
void Unlock() { m_critsec.Unlock(); }
private:
_CritSec m_critsec;
LONG m_dwRef;
};
As tabelas a seguir mostram os resultados do InternalAddRef e Lock métodos, dependendo da ThreadModel parâmetro do modelo e o modelo de threading usado pelo aplicativo:
ThreadModel = CComObjectThreadModel
Método |
Único ou Apartment Threading |
disponível de Threading |
---|---|---|
InternalAddRef |
O incremento não é thread-safe. |
O incremento é thread-safe. |
Lock |
Não faz nada; não há uma seção crítica para bloquear. |
A seção crítica está bloqueada. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
Método |
Único ou Apartment Threading |
disponível de Threading |
---|---|---|
InternalAddRef |
O incremento não é thread-safe. |
O incremento é thread-safe. |
Lock |
Não faz nada; não há uma seção crítica para bloquear. |
Não faz nada; não há uma seção crítica para bloquear. |
Requisitos
Cabeçalho: atlbase.h
Consulte também
Referência
CComMultiThreadModel::ThreadModelNoCS