Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
Importante
Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.
Sintaxe
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
Parâmetros
ThreadAllocator
[dentro] A classe que gere a seleção de threads. O valor padrão é CComSimpleThreadAllocator.
Membros
Methods
| Função | Description |
|---|---|
| CreateInstance | Seleciona uma thread e depois cria um objeto no apartamento associado. |
| GetDefaultThreads | (Estática) Calcula dinamicamente o número de threads para o módulo com base no número de processadores. |
| Init | Cria as threads do módulo. |
| Bloqueio | Incrementa a contagem de bloqueios no módulo e na thread atual. |
| Desbloquear | Diminui a contagem de bloqueios no módulo e na thread atual. |
Membros de Dados
| Membro de dados | Description |
|---|---|
| dwThreadID | Contém o identificador do tópico atual. |
| m_Allocator | Gere a seleção de fios. |
| m_nThreads | Contém o número de threads no módulo. |
| m_pApartments | Gere os apartamentos do módulo. |
Observações
Observação
Esta classe está obsoleta, tendo sido substituída pelas classes derivadas de CAtlAutoThreadModule e CAtlModule . A informação que se segue destina-se a ser usada com versões mais antigas de ATL.
CComAutoThreadModule deriva do CComModule para implementar um servidor COM de modelo apartamento em pool-pool de threads para EXEs e serviços Windows.
CComAutoThreadModule usa o CComApartment para gerir um apartamento para cada thread do módulo.
Deriva o teu módulo a partir CComAutoThreadModule do momento em que queres criar objetos em vários apartamentos. Deve também incluir a macro DECLARE_CLASSFACTORY_AUTO_THREAD na definição de classe do seu objeto para especificar CComClassFactoryAutoThread como a fábrica de classes.
Por defeito, o ATL COM AppWizard (o ATL Project Wizard no Visual Studio .NET) irá derivar o seu módulo a partir de CComModule. Para usar CComAutoThreadModule, modificar a definição da 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
Requerimentos
Cabeçalho: atlbase.h
CComAutoThreadModule::CreateInstance
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
Parâmetros
pfnCreateInstance
[dentro] Um apontador para uma função criadora.
riid
[dentro] O IID da interface solicitada.
ppvObj
[fora] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não suportar esta interface, ppvObj é definido como NULL.
Valor de retorno
Um valor HRESULT padrão.
Observações
Seleciona uma thread e depois cria um objeto no apartamento associado.
CComAutoThreadModule::d wThreadID
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
DWORD dwThreadID;
Observações
Contém o identificador do tópico atual.
CComAutoThreadModule::GetDefaultThreads
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
static int GetDefaultThreads();
Valor de retorno
O número de threads a criar no módulo EXE.
Observações
Esta 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 defeito, este valor de retorno é passado ao método Init para criar as threads.
CComAutoThreadModule::Init
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
Parâmetros
p
[dentro] Um ponteiro para um array de entradas de mapa de objetos.
h
[dentro] A HINSTÂNCIA passou para DLLMain ou WinMain.
plibid
[dentro] Um apontador para o LIBID da biblioteca de tipos associada ao projeto.
nThreads
[dentro] O número de threads a criar. Por defeito, nThreads é o valor devolvido pelo GetDefaultThreads.
Observações
Inicializa os membros dos dados e cria o número de threads especificados por nThreads.
CComAutoThreadModule::Lock
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
LONG Lock();
Valor de retorno
Um valor que pode ser útil para diagnósticos ou testes.
Observações
Realiza um incremento atómico na contagem de bloqueios para o módulo e para a thread atual.
CComAutoThreadModule utiliza a contagem de bloqueios do módulo para determinar se algum cliente está a aceder ao módulo. A contagem de bloqueios no thread atual é usada para fins estatísticos.
CComAutoThreadModule::m_Allocator
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
ThreadAllocator m_Allocator;
Observações
A seleção de threads que gere o objeto. Por defeito, o ThreadAllocator parâmetro do modelo de classe é CComSimpleThreadAllocator.
CComAutoThreadModule::m_nThreads
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
int m_nThreads;
Observações
Contém o número de threads no módulo EXE. Quando o Init é chamado, m_nThreads é definido para o valor do parâmetro nThreads . O apartamento associado a cada thread é gerido por um objeto CComApartment .
CComAutoThreadModule::m_pApartments
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
CComApartment* m_pApartments;
Observações
Aponta para um array de objetos CComApartment , cada um dos quais gere um apartamento no módulo. O número de elementos no array baseia-se no m_nThreads membro.
CComAutoThreadModule::Unlock
A partir do ATL 7.0, CComAutoThreadModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.
LONG Unlock();
Valor de retorno
Um valor que pode ser útil para diagnósticos ou testes.
Observações
Realiza um decremento atómico na contagem de bloqueios para o módulo e para a thread atual.
CComAutoThreadModule utiliza a contagem de bloqueios do módulo para determinar se algum cliente está a aceder ao módulo. A contagem de bloqueios no thread atual é usada para fins estatísticos.
Quando o número de bloqueios do módulo atinge zero, o módulo pode ser descarregado.
Consulte também
Visão geral da classe
Classes de Módulo