windows自带的线程池

复制代码
#define  _CRT_SECURE_NO_WARNINGS 
#include "iostream"
#include "windows.h"
using namespace std;

void NTAPI poolThreadFunc(
    _Inout_ PTP_CALLBACK_INSTANCE Instance,
    _Inout_opt_ PVOID Context)
{
    cout << GetCurrentThreadId() << endl;
}

void NTAPI poolThreadWork(
    _Inout_ PTP_CALLBACK_INSTANCE Instance,
    _Inout_opt_ PVOID Context,
    _Inout_ PTP_WORK Work)
{
    cout << GetCurrentThreadId() << endl;
}

int main()
{
    //创建线程池
//    PTP_POOL threadPool = CreateThreadpool(NULL);
//    SetThreadpoolThreadMinimum(threadPool, 1);
//    SetThreadpoolThreadMaximum(threadPool, 3);
    //初始化环境
    TP_CALLBACK_ENVIRON te;
    InitializeThreadpoolEnvironment(&te);
//    SetThreadpoolCallbackPool(&te, threadPool);
    //创建线程
    //TrySubmitThreadpoolCallback(poolThreadFunc, NULL, &te);  //单次工作提交,以异步的方式运行函数,一次性任务
    //TrySubmitThreadpoolCallback(poolThreadFunc, NULL, &te);
    //TrySubmitThreadpoolCallback(poolThreadFunc, NULL, &te);
    //TrySubmitThreadpoolCallback(poolThreadFunc, NULL, &te);
    
    //清理线程池的环境变量
//    DestroyThreadpoolEnvironment(&te);
    //关闭线程池
//    CloseThreadpool(threadPool);

//    SuspendThread();   //更改线程状态为悬挂
//    ResumeThread();    //恢复线程状态运行

    /*
    创建工作项
    */
    PTP_WORK pwk;
    pwk = CreateThreadpoolWork(poolThreadWork, NULL, &te);
     //提交工作项,可以提交多次
    SubmitThreadpoolWork(pwk);
    SubmitThreadpoolWork(pwk);
    //等待工作结束
    WaitForThreadpoolWorkCallbacks(pwk, false);
    //关闭工作对象
    CloseThreadpoolWork(pwk);
    
    system("pause");
    return 0;
}
复制代码

 

posted @   zhou_blog  阅读(1935)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具
· C# 13 中的新增功能实操
点击右上角即可分享
微信分享提示