博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
core--线程池
阅读量:5328 次
发布时间:2019-06-14

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

对于服务器-客户端这种架构的软件,通常客户端的数据来自于服务器,如何让一个服务器进程,来满足多个客户端程序的数据请求?一种简单的方法就是,每当一个客户请求来领,服务器就为该客户端创建一个线程。当有100个客户端请求,服务器就应该有100个数据结构分别管理每一个线程。通常服务器还要为每个客户端如何分配,哪个客户端发多少数据进行动态的调整。这是一个非常复杂的工作。好的是,windows为我们提供了一个这种问题的解决方案--线程池

线程池编程,只需要关心任务本身,而不需要去创建,管理,销毁线程。为了便于理解,我们的可以将我们编程的线程代码当做一个任务,交给线程机器人,然后让线程去执行。线程池就是一个超级机器人,专门用来管理每一个线程。

线程池有一下4个应用场景:

1.异步方式的函数调用

2.定时函数调用

3.内核促发时函数调用

4.异步I/O请求完成时函数调用

使用通过4步来实现

1.根据所选择的应用场景实现一个函数调用原型

4种应用场景的函数模型分别为:

VOID CALLBACK WorkCallback

VOID CALLBACK TimeoutCallBack

VOID CALLBACK WaitCallBack

VOID CALLBACK OverlappedCompletionRoutine

2.创建一个工作项

4种应用场景的函数模型分别为:

PTP_WORK CreateThreadPoolWork(@WorkCallback,…)

PTP_TIMER CreateThreadPoolTimer(@TimeoutCallBack,….)

PTP_WAIT CreateThreadPoolWait(@WaitCallBack,…)

PTP_IO CreateThreadPoolTO(…,@OverlappedCompletionRoutine,…)

3.将工作项提交到线程池

4种应用场景的函数模型分别为:

SubmitThreadPoolWort(PTP_WORK,…)

SetThreadPoolTimer(PTP_TIMER,…)

SetThreadPoolWait(PTP_WAIT,…)

StartThreadPoolIO(PTP_IO,…)

4.关闭工作项

4种应用场景的函数模型分别为:

CloseThreadPoolWork(PTP_WORK)

CloseThreadPoolTimer(PTP_TIMER)

CloseThreadPoolWait(PTP_WAIT)

CloseThreadPoolIO(PTP_IO)

转载于:https://www.cnblogs.com/pavkoo/p/3427002.html

你可能感兴趣的文章
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>