zoukankan      html  css  js  c++  java
  • 《Windows核心编程》第十一章——线程池

    • 隐式使用工作项
    #include <iostream>
    #include <windows.h>
    
    int g_nCount = 0;
    VOID NTAPI SimpleCallback(PTP_CALLBACK_INSTANCE pInstance, PVOID pvContext)
    {
        g_nCount++;
        printf("test:%d
    ", g_nCount);
    }
    
    void main()
    {
        int nCount = 500;
        PTP_SIMPLE_CALLBACK pFunc = SimpleCallback;
        while (0 != nCount)
        {
            TrySubmitThreadpoolCallback(pFunc, NULL, NULL);
    
            nCount--;
        }
        getchar();
    }

    通过结果观察发现,利用了线程池,输出并非有序:

    显式地控制工作项

    void main()
    {
        g_pWorkItem = CreateThreadpoolWork(TaskHandler, NULL, NULL);
        if (NULL == g_pWorkItem)
        {
            return;
        }
        int nCount = 5000;
        while (nCount)
        {
            SubmitThreadpoolWork(g_pWorkItem);
            nCount--;
        }
        WaitForThreadpoolWorkCallbacks(g_pWorkItem, FALSE);
        CloseThreadpoolWork(g_pWorkItem);
        getchar();
    }

    如果改为下面这样,则会报错:

    int g_nCount = 0;
    PTP_WORK g_pWorkItem = NULL;
    
    void NTAPI TaskHandler(PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK work)
    {
        g_nCount++;
        printf("test:%d..
    ", g_nCount);
    }
    
    unsigned int _stdcall testthread(PVOID pParam)
    {
        int nCount = 500;
        while (nCount)
        {
            SubmitThreadpoolWork(g_pWorkItem);
            nCount--;
        }
    
        return 0;
    }
    
    void main()
    {
        g_pWorkItem = CreateThreadpoolWork(TaskHandler, NULL, NULL);
        if (NULL == g_pWorkItem)
        {
            return;
        }
      _beginthreadex(NULL, 0, testthread, NULL, 0, NULL);
    WaitForThreadpoolWorkCallbacks(g_pWorkItem, FALSE); CloseThreadpoolWork(g_pWorkItem); getchar(); }

    因为据书上说,只能取消或等待本线程中的工作项。

  • 相关阅读:
    origin 8.5 曲线拟合,延长曲线范围
    赤手空拳编写C#代码
    Vmware 10安装MAC OS X 10.9备忘
    Contest 1445
    Contest 1428
    Contest 1435
    Contest 991
    CSP-SJX2019 解题报告
    【BZOJ4817】【SDOI2017】树点染色
    codeforce 804B Minimum number of steps
  • 原文地址:https://www.cnblogs.com/predator-wang/p/9098487.html
Copyright © 2011-2022 走看看