IThreadPoolConfig 接口

此接口提供用于配置线程池的方法。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

__interface
    __declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown

成员

方法

名称 描述
GetSize 调用此方法可获取池中的线程数。
GetTimeout 调用此方法可获取线程池等待线程关闭的最长时间(以毫秒为单位)。
SetSize 调用此方法可设置池中的线程数。
SetTimeout 调用此方法可设置线程池等待线程关闭的最长时间(以毫秒为单位)。

备注

此接口由 CThreadPool 实现。

要求

标头:atlutil.h

IThreadPoolConfig::GetSize

调用此方法可获取池中的线程数。

STDMETHOD(GetSize)(int* pnNumThreads);

参数

pnNumThreads
[out] 成功时接收池中线程数的变量的地址。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

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

调用此方法可获取线程池等待线程关闭的最长时间(以毫秒为单位)。

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

参数

pdwMaxWait
[out] 成功时接收线程池等待线程关闭的最长时间(以毫秒为单位)的变量的地址。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

请参阅 IThreadPoolConfig::GetSize

IThreadPoolConfig::SetSize

调用此方法可设置池中的线程数。

STDMETHOD(SetSize)int nNumThreads);

参数

nNumThreads
池中请求的线程数。

如果 nNumThreads 为负数,则将其绝对值乘以机器中的处理器数即可得到总线程数。

如果 nNumThreads 为零,则 ATLS_DEFAULT_THREADSPERPROC 乘以机器中的处理器数即可获得线程总数。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

请参阅 IThreadPoolConfig::GetSize

IThreadPoolConfig::SetTimeout

调用此方法可设置线程池等待线程关闭的最长时间(以毫秒为单位)。

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

参数

dwMaxWait
线程池将等待线程关闭的请求最长时间(以毫秒为单位)。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

请参阅 IThreadPoolConfig::GetSize

另请参阅


CThreadPool 类