前言

在Windows系统下使用线程池非常方便,在不考虑定制线程池的情况下,几行代码就可以编写一个简易且高效的线程池,本文分别列举了两种Windows系统下线程池的使用方法,以满足不同的需求:1、简单使用线程池;2、定制线程池;3、封装线程池类;

正文

1、简单使用线程池:

简单使用线程池确实很容易,几行代码加个注释应该就能明白了;

#include <stdio.h>
#include <windows.h>
#include <threadpoolapiset.h>struct TaskParam
{//数据int data;//工作项PTP_WORK pWorkItem;
};//线程池测试//线程池回调函数
VOID NTAPI TaskHandler(_Inout_     PTP_CALLBACK_INSTANCE Instance,_Inout_opt_ PVOID                 Context,_Inout_     PTP_WORK              Work
)
{TaskParam *pParam = (TaskParam*)Context;if (pParam){printf("ThreadID:%0x,data=%d\n", GetCurrentThreadId(), pParam->data);//如果任务没有完成,会异步释放,如果任务完成则会立即释放CloseThreadpoolWork(pParam->pWorkItem);delete pParam;}Sleep(2000);
}int main()
{ for (int i = 0; i &l

Windows线程池使用方法相关推荐

  1. 《Windows via C/C++》学习笔记 —— Windows 线程池

    线程池(thread pool),允许有多个线程同时存在,并发执行,并且这些线程受到统一管理. 在Windows Vista中,提供了全新的线程池机制,一般这些线程池中的线程的创建的销毁是由操作系统自 ...

  2. 【操作系统】操作系统知识点整理;C++ 实现线程池与windows 线程池的使用;

    文章目录 体系结构 冯诺依曼 存储结构 cache常见的组织结构 cache命中 缓存一致性 硬中断.软中断 操作系统结构 内核 Linux宏内核 内存管理 虚拟内存 内存管理 - 分段 - 分页 - ...

  3. 【Android 异步操作】线程池 ( 线程池 execute 方法源码解析 )

    文章目录 一.线程池 execute 方法源码解析 二.线程池 execute 方法完整源码及注释 一.线程池 execute 方法源码解析 进入 ThreadPoolExecutor 中 , 查看线 ...

  4. 【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )

    文章目录 一.线程池简介 二.线程池初始化方法简介 三.线程池使用示例 一.线程池简介 线程池一般是实现了 ExecutorService 接口的类 , 一般使用 ThreadPoolExecutor ...

  5. Java和Spring中线程池创建方法

    一.线程池定义 1.JDK中线程池类图 Executor:父接口,所有线程池都实现了这个接口,里面有一个excute()方法用于执行线程 ExecutorService:线程池接口,继承自Execut ...

  6. Android中网络请求创建单个线程池的方法

    创建单个线程池的方法 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; impor ...

  7. 线程池invokeAll方法详解

    线程池invokeAll方法详解 问题起源与抽象 问题排查与猜测 猜测一:invokeAll 在异步执行后会不会同步等待线程执行完毕获取最终结果 猜测二:队列里面可能存在第一次调用 invokeAll ...

  8. 线程池三大方法,七大参数,四种拒绝策略

    线程和进程: 进程: 一个程序,是执行程序的一次执行过程. 一个进程往往包含若干个线程,线程是cpu调度和执行的单位. Java默认有2个线程:main.GC 池化技术: 01:程序的运行,本质 :占 ...

  9. java线程池之一:创建线程池的方法

    在Java开发过程中经常需要用到线程,为了减少资源的开销,提高系统性能,Java提供了线程池,即事先创建好线程,如果需要使用从池中取即可,Java中创建线程池有以下的方式, 1.使用ThreadPoo ...

最新文章

  1. 黑色星期五Friday the Thirteenth
  2. c语言大作业之镖行天下,天下识君--如何最快速度刷完天下识君
  3. 多案分库分表带来的问题-跨库关联查询
  4. ext get id js_【翻译】Ext JS最新技巧——2015-8-11
  5. Lambda 表达式详解~Streams API~Stream常见接口方法
  6. mac+免密登陆+linux,mac ssh免密登录Linux
  7. 二十六岁,博士考入团中央选调生,前途如何?
  8. jquery实现app开发闹钟功能_一款让你真正摆脱懒觉的“闹钟APP软件”
  9. qq音乐android升级版,QQ音乐Android 4.8更新 温暖私享正版无损好音乐
  10. 软件工程毕设项目 - 基于SSM的毕业设计管理系统(含源码+论文)
  11. linux之hugepage
  12. MFS分布式文件系统
  13. 华为路由器DNS服务器未响应,路由器dns辅服务器未响应
  14. Linux查看服务器SN序列码
  15. php对接微信提醒,PHP对接微信公众平台消息接口开发流程教程
  16. 火狐中无法打开google的搜索结果的解决方式
  17. uipath锚点的使用
  18. 关于个人在遇到Synaptics后的处理方法
  19. ChemOffice Suite 2018 18.1.2.18
  20. cocos2dx中的颜色混合

热门文章

  1. Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
  2. 新浪云SAE使用WordPress搭建个人博客
  3. 用java画乌龟_java用swing画可以行走的乌龟
  4. w10 保护你的计算机,怎么锁定计算机?增强W10装机版锁定电脑屏幕的步骤
  5. EFR32FG25WI-SUNFAN1.1
  6. SpringCloud学习一(回顾之前学的微服务知识点、springcloud入门概述、服务提供者和消费者)
  7. js中string转map的方法
  8. xposed模块开发流程
  9. C语言字符串分割实例
  10. yolo v3做行人检测+alexnet做上衣颜色识别