Interfaz IThreadPoolConfig
Esta interfaz proporciona métodos para configurar un grupo de subprocesos.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Miembros
Métodos
Nombre | Descripción |
---|---|
GetSize | Llame a este método para obtener el número de subprocesos del grupo. |
GetTimeout | Llame a este método para conseguir el tiempo máximo en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso. |
SetSize | Llame a este método para establecer el número de subprocesos del grupo. |
SetTimeout | Llame a este método para establecer el tiempo máximo en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso. |
Comentarios
Esta interfaz se implementa a través de CThreadPool.
Requisitos
Header: atlutil.h
IThreadPoolConfig::GetSize
Llame a este método para obtener el número de subprocesos del grupo.
STDMETHOD(GetSize)(int* pnNumThreads);
Parámetros
pnNumThreads
[out] Dirección de la variable que, si se ejecuta correctamente, recibe el número de subprocesos del grupo.
Valor devuelto
Devuelve S_OK si es correcto o un error HRESULT en caso de error.
Ejemplo
HRESULT DoPoolOperations(IThreadPoolConfig* pPool, int nSize)
{
int nCurrSize = 0;
HRESULT hr = pPool->GetSize(&nCurrSize);
if (SUCCEEDED(hr))
{
printf_s("Current pool size: %d\n", nCurrSize);
hr = pPool->SetSize(nSize);
if (SUCCEEDED(hr))
{
printf_s("New pool size : %d\n", nSize);
DWORD dwTimeout = 0;
hr = pPool->GetTimeout(&dwTimeout);
if (SUCCEEDED(hr))
{
printf_s("Current pool timeout: %u\n", dwTimeout);
// Increase timeout by 10 seconds.
dwTimeout += 10 * 1000;
hr = pPool->SetTimeout(dwTimeout);
if (SUCCEEDED(hr))
{
printf_s("New pool timeout: %u\n", dwTimeout);
}
else
{
printf_s("Failed to set pool timeout: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to get pool timeout: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to resize pool: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to get pool size: 0x%08x\n", hr);
}
return hr;
}
IThreadPoolConfig::GetTimeout
Llame a este método para conseguir el tiempo máximo en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parámetros
pdwMaxWait
[out] Dirección de la variable que, si se ejecuta correctamente, recibe el tiempo máximo en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso.
Valor devuelto
Devuelve S_OK si es correcto o un error HRESULT en caso de error.
Ejemplo
Consulte IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Llame a este método para establecer el número de subprocesos del grupo.
STDMETHOD(SetSize)int nNumThreads);
Parámetros
nNumThreads
El número solicitado por el grupo de subprocesos.
Si nNumThreads es negativo, su valor absoluto se multiplicará por el número de procesadores de la máquina y así obtener el número total de subprocesos.
Si nNumThreads es cero, ATLS_DEFAULT_THREADSPERPROC se multiplicará por el número de procesadores de la máquina y así obtener el número total de subprocesos.
Valor devuelto
Devuelve S_OK si es correcto o un error HRESULT en caso de error.
Ejemplo
Consulte IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Llame a este método para establecer el tiempo máximo en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parámetros
dwMaxWait
El tiempo máximo solicitado en milisegundos que el grupo de subprocesos esperará para que se apague un subproceso.
Valor devuelto
Devuelve S_OK si es correcto o un error HRESULT en caso de error.
Ejemplo
Consulte IThreadPoolConfig::GetSize.