




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、windows 核心编程(第五版)笔记第十一章线程池 (thewindowsthrea. Windows 核心编程(第五版)笔记 第十一章 线程池 (The Windows Thread Pool) 第十一章 线程池 线程池的目的就是为了减少创建和销毁线程的额外开销,利 用已经存在的线程多次循环执行多个任务从而提高系统的 处理能力 . 线程池会自动地根据内制的算法增加或减少线程池中的线 程或为程序增加新的线程池。 1. 异步方法调用 异步方法调用有以下两种方法: (1)线程函数原型 (回调函数 ) VOID NTAPI SimpleCallback ( PTP_CALLBACK_INSTANC
2、E pInstance, / See Callback Termination Actions section PVOID pvContext ); TrySubmitThreadpoolCallback 该函数将线程函数执 行请求发到线程池 ,并将一个 工作项目 添加到线程池的队 列中。 注:我们不需要调用 CreateThread函数,线程池中的线程会执行我们的回调函数 (2)显示控制 工作项目 CreateThreadpoolWork 创建一个工作项目 等待线程函数执 SubmitThreadpoolWork 将工作项目提交到线程池中,一个工作项目可以多次提交到 线程池中。 WaitFo
3、rThreadpoolWorkCallbacks BOOLbCancelPendingCallbacks 行完毕或取消执行线程函数 CreateThreadpoolWork 要求的线程函数原型: VOID CALLBACK WorkCallback ( PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work ); VOID WaitForThreadpoolWorkCallbacks ( PTP_WORK pWork, ); 2. 时间间隔内调用函数 (1)CreateThreadpoolTimer 要求的线程函数原型 VOID
4、 CALLBACK TimeoutCallback ( PTP_CALLBACK_INSTANCE pInstance, / See Callback Termination Actions section PVOID pvContext, PTP_TIMER pTimer ); (2)步骤 CreateThreadpoolTimer SetThreadpoolTimer WaitForThreadpoolTimerCallbacks CloseThreadpoolTimer 3. 当内核对象处于 Signal 状态时调用函数 当指定的内核对象变 成 Signal 状态或等待超时,线程池会用户
5、指定的线程函数。 之后当内核对象再次 变成 Signal 状态时 ,线程函数不会被调用,除非再次调用 SetThreadpoolWait 注册线程函数。 (1)CreateThreadpoolWait 要求的线程函数原型 VOID CALLBACK WaitCallback ( PTP_CALLBACK_INSTANCE pInstance, / See Callback Termination Actions section PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult ); CreateThreadpoolWait SetT
6、hreadpoolWait 不允许多次注册同样的Handle,但是我们可以用 DuplicateHandle 函数复制一个句柄 然后再注册。 WaitForThreadpoolWaitCallbacks CloseThreadpoolWait 4. 当异步 I/O 请求结束后调用函数 To be filled 5. 回调终结后的操作和私有线程 To be filled 6. Common API TrySubmitThreadpoolCallback CreateThreadpoolWork SubmitThreadpoolWork WaitForThreadpoolWorkCallbacks CloseThreadpoolWork CreateThreadpoolTimer SetThreadpoolTimer WaitForThreadpoolTimerCallbacks CloseThreadpoolTimer CreateThreadpoolWait SetThreadpoolWait Wait
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 付国外佣金合同范本
- 化妆品广告合同范本
- 丰田汽车合同范本
- 光伏运营合作合同范本
- 农户辣椒种植合同范本
- 优惠仓库租赁服务合同范本
- 冷冻海鲜销售合同范本
- 农村购买坟地合同范本
- 中石油员工业绩合同范本
- 会务定金合同范本
- 养殖场灭鼠方案
- 室外道路及管网工程拟投入的主要施工机械设备及测量仪器表
- 腹部外伤护理查房记录
- 人教版新起点小学英语二年级下册教案-全册
- 医院护理带教老师竞聘课件
- DB23T 3539-2023 金属非金属矿山采掘施工企业安全生产标准化评定规范
- 姜晓龙-麦田除草剂爱秀的开发-先正达
- 优质课一等奖小学综合实践《我也能发明》课件
- 部编人教版三年级下册语文:荷花课件
- 多联机空调系统设计课件
- 螺纹牙强度校核计算
评论
0/150
提交评论