线程池服务程序设计

来源:互联网 发布:javascript在线看 编辑:程序博客网 时间:2024/06/03 18:39

1)原理分析

线程池的核心设计思想是系统在初始化时,创建一定数量的服务线程,并使他们处于空闲状态,若当前有新用户到来,则系统先查找当前有无空闲线程,若有则立即为其分配服务线程,如没有,则将新用户加入待服务队列,并在其他用户结束服务时,再重新为其分配服务线程。

新用户如果在等待服务队列里的时间过长,会影响用户体验。

方法:1、动态创建新服务线程,服务结束后,该线程加入到线性池,但大量的用户下,使线程池变得很大,最后因资源消耗过多。2、在1的基础上增加线程资源回收机制。当线程规模达到一定程度,会主动杀死一些进程。


该系统简单的设计方案:

1、系统在初始化时,开辟MAX_NUM个线程(MAX_NUM是个宏,默认20)组成服务线程池

2、每个线程均分为有两个状态,一个是空闲状态,另一个是工作状态,每个线程均有一块属于自己的公共数据区域,这块数据区域中存放两个变量,其中一个变量标记自身状态,0则表示处于空闲状态;1则为工作状态。另一个变量对应客户端的套接字号,如果线程处于空闲状态,则套接字号为0;

3、有新用户到来时,系统通过查找公共数据区域,判断当前是否有空闲线程,若有则直接为其分配服务线程。

4、若当前没有空闲程序,系统将不做任何处理,提示当前系统忙,关闭新客户套接字。



待续……

原创粉丝点击