windows自带的线程池

Posted 一往无前

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}

 

以上是关于windows自带的线程池的主要内容,如果未能解决你的问题,请参考以下文章

使用java自带线程池

Spring自带的线程池ThreadPoolTaskExecutor

如何使用java语言实现一个线程池,不使用jdk自带的线程池

线程池与并行度

使用jdk自带的线程池。加载10个线程。

Motan在服务provider端用于处理request的线程池