线程池的使用,未完待续

#include "stdafx.h"

#include <Windows.h>
#include
<iostream>
#include <process.h>

using namespace
std;
INT i;
VOID CALLBACK Fun(PTP_CALLBACK_INSTANCE Instancd,PVOID
Context,PTP_WORK Work){
  
 cout<<i++<<‘\t‘;
}

int main(){
 
 
PTP_WORK pw;
  TP_CALLBACK_ENVIRON cbe;
  PTP_POOL
pool;
  pool=CreateThreadpool(NULL);//创建线程池
 
if(NULL==pool ){
    cout<<"createThreadpoll
failed!"<<endl;

  return -1;
  }
 
SetThreadpoolThreadMaximum(pool,100);
 
SetThreadpoolThreadMinimum(pool,1);

 
InitializeThreadpoolEnvironment(&cbe);
 
SetThreadpoolCallbackPool(&cbe,pool);

 pw=CreateThreadpoolWork(Fun,NULL,&cbe);//创建工作项
 
for(int i=0;i<10000;i++){
     
  
   SubmitThreadpoolWork(pw);//提交工作项  

      }

WaitForThreadpoolWorkCallbacks(pw, FALSE);//等待工作结束

 CloseThreadpoolWork(pw);

  
system("pause");
   return 0;
}

下面是一些函数的用法和步骤,摘自:http://www.cnblogs.com/wz19860913/articles/1274214.html

PTP_POOL pThreadpool = CreateThreadpool(NULL); // 创建线程池

// 设置线程池线程数量上下限

SetThreadpoolThreadMinimum(pThreadpool, 2);

SetThreadpoolThreadMaximum(pThreadpool, 10);

// 初始化“回调函数环境”结构

TP_CALLBACK_ENVIRON tcbe;

InitializeThreadpoolEnvironment(&tcbe);

// 将该回调函数环境结构与线程池相关联

SetThreadpoolCallbackPool(&tcbe, pThreadpool);

// 创建清理组

PTP_CLEANUP_GROUP pTpcg= CreateThreadpoolCleanupGroup();

// 将回调函数环境结构与清理组关联起来

SetThreadpoolCallbackCleanupGroup(&tcbe, pTpcg, NULL);

// 现在可以创建一些项,提交给线程池

PTP_WORK pTpWork = CreateThreadpoolWork(, &tcbe);// 创建一个工作项

SubmitThreadpoolWork(pTpWork); // 提交工作项

PTP_TIMER pTpTimer = CreateThreadpoolTimer(, &tcbe);// 创建一个定时器项

SetThreadpoolTimer(pTpTimer, ); // 提交定时器

PTP_WAIT pTpWait = CreateThreadpoolWait(, &tcbe);// 创建一个等待项

SetThreadpoolWait(pTpWait, ); // 提交等待项

PTP_IO pTpIO = CreateThreadpoolIo(, &tcbe); // 创建一个IO项

StartThreadpoolIo(pTpIO); // 开始执行IO项

// 等待所有项完成

CloseThreadpoolCleanupGroupMembers(pTpcg, FALSE, NULL);

// 关闭各个项

CloseThreadpoolWork(pTpWork);

CloseThreadpoolTimer(pTpTimer);

CloseThreadpoolWait(pTpWait);

CloseThreadpoolIo(pTpIO);

CloseThreadpoolCleanupGroup(pTpcg); // 关闭线程池清理组

DestroyThreadpoolEnvironment(&tcbe); // 删除回调函数环境结构

CloseThreadpool(pThreadpool); // 关闭线程池

时间: 2024-10-13 05:17:37

线程池的使用,未完待续的相关文章

Android线程池的使用(未完)

ExecutorService Executors public class Executors // 创建一个线程池,使用固定数量的线程操作共享无界队列. public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runna

性能测试调优篇---未完待续

性能测试调优一:1.首先,看下选测交易的整个走向纯系统内部交易:选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表??该交易走了那几台机器,这几台机器的网络连接情况是什么样的??这几台机器是通过走的是哪些虚拟网卡,走了哪些路由器??带宽是什么情况??该交易在这几台机器上消耗了多少CPU,内存,及其对磁盘做了多少次的访问??从方法层面,从该交易的发起到结束,起了多少线程,调用了哪些相关的方法以及接口,访问了哪些表???跨系统交易:该交易发起后,每一步请

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

听风讲MVC丶 —— 一言不合就撸码 (未完待续&#183;&#183;&#183;&#183;&#183;&#183;)

     希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                                                                                                                ——久伴深海丶默 1.什么是前端控制器(font controller).Java Web中的前端控制器是应用的门面,

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

Unity3D快捷键 未完待续

Unity3D 点选Object+F Object在当前视角居中 CTRL+1/2 Scene/Game视图的切换 MonoDevelop CTRL+K  删除光标所在行的该行后面的代码 CTRL + ALT +C  注释/不注释该行 CTRL+ DOWN  像鼠标滚轮一样向下拖 CTRL + UP 像鼠标滚轮一样向上拖 CTRL + F  查找该脚本 CTRL + SHIFT + F 查找全部脚本 CTRL + H 替换代码 CTRL + SHIFT +W 关掉所有脚本 Unity3D快捷键

模板区域[未完待续](会定期的更新哦(有时间就更了))

写这个博客目的就是为了记录下学过的模板方便我这焫鷄复习吧//dalao们绕道 近期学的: (1)来自机房学长jjh大神教的求1~n的所有最小素因数和加上本焫鷄的批注 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>//求1~n的最小质因数 using namespace std; const int MAXN=1e6+