core--线程池
对于服务器-客户端这种架构的软件,通常客户端的数据来自于服务器,如何让一个服务器进程,来满足多个客户端程序的数据请求?一种简单的方法就是,每当一个客户请求来领,服务器就为该客户端创建一个线程。当有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)
core--线程池的更多相关文章
- asp.net core C#设计一个实用的线程池
		
菜菜呀,我最近研究技术呢,发现线上一个任务程序线程数有点多呀 CEO,CTO,CFO于一身的CXO x总,你学编程呢? 菜菜 作为公司总负责人,我以后还要管理技术部门呢,怎么能不会技术呢 CEO,CT ...
 - 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)
		
前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...
 - Java线程池解析
		
Java的一大优势是能完成多线程任务,对线程的封装和调度非常好,那么它又是如何实现的呢? jdk的包下和线程相关类的类图. 从上面可以看出Java的线程池主的实现类主要有两个类ThreadPoolEx ...
 - 【转】线程及同步的性能 - 线程池 / ThreadPoolExecutors / ForkJoinPool
		
线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...
 - 并发包的线程池第一篇--ThreadPoolExecutor执行逻辑
		
学习这个很长时间了一直没有去做个总结,现在大致总结一下并发包的线程池. 首先,任何代码都是解决问题的,线程池解决什么问题? 如果我们不用线程池,每次需要跑一个线程的时候自己new一个,会导致几个问题: ...
 - C语言实现线程池
		
以前写过一篇关于如何使用多线程推升推送速度(http://www.cnblogs.com/bai-jimmy/p/5177433.html),能够到达5000qps,其实已经可以满足现在的业务,不过在 ...
 - java多线程系类:JUC线程池:03之线程池原理(二)(转)
		
概要 在前面一章"Java多线程系列--"JUC线程池"02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包 ...
 - [.NET] 自己实现任务池(模仿线程池)
		
线程池虽然好用,但限制也不少: (1)总觉得默认的 MaxThread 小了一点,每次使用都要手工调大= = (2)任务不能等待完成 (3)任务一旦加入不能取消,甚至不知道是正在排队/正在执行/执行完 ...
 - 线程池ThreadPoolExecutor、Executors参数详解与源代码分析
		
欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. ThreadPoolExecutor数据成员 Private final Atom ...
 - Java多线程系列--“JUC线程池”03之 线程池原理(二)
		
概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包括:线程池示例参考代 ...
 
随机推荐
- Java递归列出目录下全部文件
			
Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...
 - Unity3D 批量图片资源导入设置
			
原地址:http://blog.csdn.net/asd237241291/article/details/8433548 创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:[] 本 ...
 - mysql 函数,关键字,特性
			
## mysql 截取函数 left(),right(),substring(),substring_index()SELECT LEFT('www.baidu.com',3); # wwwSELEC ...
 - linux shell的输出效果修改方法(界面颜色)
			
文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色, ...
 - Javascript获取URL参数值
			
getQueryString: function (name) { var reg = new RegExp("(^|&)" + name.toLowerCase() + ...
 - (转)Maximum subarray problem--Kadane’s Algorithm
			
转自:http://kartikkukreja.wordpress.com/2013/06/17/kadanes-algorithm/ 本来打算自己写的,后来看到上述链接的博客已经说得很清楚了,就不重 ...
 - Android核心分析之十九电话系统之GSMCallTacker
			
GSMCallTracker在本质上是一个Handler.<IGNORE_JS_OP> 1.jpg (1.52 KB, 下载次数: 1) 下载附件 保存到相册 2012-3-22 11: ...
 - TCP建立连接的三次握手过程
			
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...
 - iOS:核心动画之关键帧动画CAKeyframeAnimation
			
CAKeyframeAnimation——关键帧动画 关键帧动画,也是CAPropertyAnimation的子类,与CABasicAnimation的区别是: –CABasicAnimation只能 ...
 - iOS:分割控制器UISplitViewcontroller
			
分割控制器UISplitViewController <1>功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个:左边的为主控制器,右边的为详细控制器,主控 ...