博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Windows核心编程》第十一章——线程池
阅读量:4487 次
发布时间:2019-06-08

本文共 1521 字,大约阅读时间需要 5 分钟。

  • 隐式使用工作项
#include 
#include
int g_nCount = 0;VOID NTAPI SimpleCallback(PTP_CALLBACK_INSTANCE pInstance, PVOID pvContext){ g_nCount++; printf("test:%d\n", 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..\n", 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();}

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

 

转载于:https://www.cnblogs.com/predator-wang/p/9098487.html

你可能感兴趣的文章
micropython logging文档
查看>>
Web站点风格切换的实现
查看>>
Python 文件操作
查看>>
免费后台管理UI界面、html源码推荐
查看>>
Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
查看>>
python学习-- Django根据现有数据库,自动生成models模型文件
查看>>
github第一步之初始化操作
查看>>
《CoderXiaoban团队》第一次作业:团队亮相
查看>>
使用vue脚手架vue-cli搭建项目
查看>>
四轴飞行器Bootloader和固件的更新
查看>>
NLP之电影评分数据的情感分析
查看>>
常用网站颜色代码
查看>>
【bzoj1593-预定旅馆】线段树维护连续区间
查看>>
Maven的Scored介绍
查看>>
cookie 和session 的区别详解
查看>>
【Java】 大话数据结构(5) 线性表之双向链表
查看>>
【Java】 大话数据结构(6) 栈的顺序与链式存储
查看>>
java 断点续传(springMvc),可支持html5 vedio在线播放 posted @ 2017年3月11日 16:15:44...
查看>>
[入门阅读]怎样在android中解析JSON
查看>>
extjs中rowEditing动态编辑
查看>>