CComAutoThreadModule Class
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
Parâmetros
ThreadAllocator
[entrada] A classe que gerencia a seleção de thread. O valor padrão é CComSimpleThreadAllocator.
Membros
Métodos
Função | Descrição |
---|---|
CreateInstance | Seleciona um thread e cria um objeto na acomodação associada. |
GetDefaultThreads | (Estático) Calcula dinamicamente o número de threads para o módulo com base no número de processadores. |
Init | Cria os threads do módulo. |
Lock | Incrementa a contagem de bloqueios no módulo e no thread atual. |
Unlock | Diminui a contagem de bloqueios no módulo e no thread atual. |
Membros de dados
Membro de dados | Descrição |
---|---|
dwThreadID | Contém o identificador do thread atual. |
m_Allocator | Gerencia a seleção de thread. |
m_nThreads | Contém o número de threads no módulo. |
m_pApartments | Gerencia as acomodações do módulo. |
Comentários
Observação
Essa classe é obsoleta, tendo sido substituída pelas classes derivadas CAtlAutoThreadModule e CAtlModule. As informações a seguir são usadas com versões mais antigas da ATL.
CComAutoThreadModule
deriva do CComModule para implementar um servidor COM com modelo de acomodação e thread para EXEs e serviços windows. CComAutoThreadModule
usa CComApartment para gerenciar uma acomodação para cada thread no módulo.
Derive seu módulo de CComAutoThreadModule
para criar objetos em várias acomodações. Você também deve incluir a macro DECLARE_CLASSFACTORY_AUTO_THREAD na definição de classe do objeto para especificar CComClassFactoryAutoThread como a fábrica de classes.
Por padrão, o ATL COM AppWizard (o Assistente de Projeto da ATL no Visual Studio .NET) derivará seu módulo de CComModule
. Para usar CComAutoThreadModule
, modifique a definição de classe. Por exemplo:
class CMyModule :
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
LONG Unlock()
{
LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
if (l == 0)
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
return l;
}
DWORD dwThreadID;
};
Hierarquia de herança
IAtlAutoThreadModule
CComAutoThreadModule
Requisitos
Cabeçalho: atlbase.h
CComAutoThreadModule::CreateInstance
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
Parâmetros
pfnCreateInstance
[entrada] Um ponteiro para uma função de criador.
riid
[in] O IID da interface solicitada .
ppvObj
[saída] Um ponteiro para o ponteiro da interface identificado por riid. Se o objeto não der suporte a essa interface, o ppvObj será definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
Comentários
Seleciona um thread e cria um objeto na acomodação associada.
CComAutoThreadModule::dwThreadID
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
DWORD dwThreadID;
Comentários
Contém o identificador do thread atual.
CComAutoThreadModule::GetDefaultThreads
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
static int GetDefaultThreads();
Valor de retorno
O número de threads a serem criados no módulo EXE.
Comentários
Essa função estática calcula dinamicamente o número máximo de threads para o módulo EXE, com base no número de processadores. Por padrão, esse valor retornado é passado para o método Init para criar os threads.
CComAutoThreadModule::Init
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
Parâmetros
p
[entrada] Um ponteiro para uma matriz de entradas de mapa de objeto.
h
[entrada] O HINSTANCE passado para DLLMain
ou WinMain
.
plibid
[entrada] Um ponteiro para o LIBID da biblioteca de tipos associada ao projeto.
nThreads
[entrada] O número de threads a serem criados. Por padrão, nThreads é o valor retornado por GetDefaultThreads.
Comentários
Inicializa os membros de dados e cria o número de threads especificados pelo nThreads.
CComAutoThreadModule::Lock
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
LONG Lock();
Valor de retorno
Um valor que pode ser útil para diagnóstico ou teste.
Comentários
Executa um incremento atômico na contagem de bloqueios para o módulo e para o thread atual. CComAutoThreadModule
usa a contagem de bloqueio do módulo para determinar se algum cliente está acessando o módulo. A contagem de bloqueios no thread atual é usada para fins estatísticos.
CComAutoThreadModule::m_Allocator
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
ThreadAllocator m_Allocator;
Comentários
O objeto que gerencia a seleção de thread. Por padrão, o parâmetro do modelo de classe ThreadAllocator
é CComSimpleThreadAllocator.
CComAutoThreadModule::m_nThreads
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
int m_nThreads;
Comentários
Contém o número de threads no módulo EXE. Quando Init é chamado, m_nThreads
é definido como o valor do parâmetro nThreads. A acomodação associada de cada thread é gerenciado por um objeto CComApartment.
CComAutoThreadModule::m_pApartments
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
CComApartment* m_pApartments;
Comentários
Aponta para uma matriz de objetos CComApartment, cada uma das quais gerencia uma acomodação no módulo. O número de elementos na matriz baseia-se no membro m_nThreads.
CComAutoThreadModule::Unlock
A partir da ATL 7.0, CComAutoThreadModule
está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.
LONG Unlock();
Valor de retorno
Um valor que pode ser útil para diagnóstico ou teste.
Comentários
Executa uma redução atômica na contagem de bloqueios para o módulo e para o thread atual. CComAutoThreadModule
usa a contagem de bloqueio do módulo para determinar se algum cliente está acessando o módulo. A contagem de bloqueios no thread atual é usada para fins estatísticos.
Quando a contagem de bloqueios do módulo atingir zero, o módulo poderá ser descarregado.