线程池服务程序设计
来源:互联网 发布:javascript在线看 编辑:程序博客网 时间:2024/06/03 18:39
1)原理分析
线程池的核心设计思想是系统在初始化时,创建一定数量的服务线程,并使他们处于空闲状态,若当前有新用户到来,则系统先查找当前有无空闲线程,若有则立即为其分配服务线程,如没有,则将新用户加入待服务队列,并在其他用户结束服务时,再重新为其分配服务线程。
新用户如果在等待服务队列里的时间过长,会影响用户体验。
方法:1、动态创建新服务线程,服务结束后,该线程加入到线性池,但大量的用户下,使线程池变得很大,最后因资源消耗过多。2、在1的基础上增加线程资源回收机制。当线程规模达到一定程度,会主动杀死一些进程。
该系统简单的设计方案:
1、系统在初始化时,开辟MAX_NUM个线程(MAX_NUM是个宏,默认20)组成服务线程池
2、每个线程均分为有两个状态,一个是空闲状态,另一个是工作状态,每个线程均有一块属于自己的公共数据区域,这块数据区域中存放两个变量,其中一个变量标记自身状态,0则表示处于空闲状态;1则为工作状态。另一个变量对应客户端的套接字号,如果线程处于空闲状态,则套接字号为0;
3、有新用户到来时,系统通过查找公共数据区域,判断当前是否有空闲线程,若有则直接为其分配服务线程。
4、若当前没有空闲程序,系统将不做任何处理,提示当前系统忙,关闭新客户套接字。
待续……
- 线程池服务程序设计
- 线程池服务程序设计(续)
- 线程池服务模型
- 线程池管理服务
- java并发程序设计总结六:线程池
- Win32程序设计之服务
- Java后台服务程序设计
- Java后台服务程序设计
- Win32程序设计之服务
- Java 后台服务程序设计
- 中断服务程序设计实验
- java后台服务程序设计
- 多进程服务程序设计
- Windows程序设计 ---线程
- linux程序设计:POSIX线程
- Pthead 线程 -- 多线程程序设计
- Linux程序设计--线程
- Java高并发程序设计笔记(四)之线程池
- PV、UV、点击量
- 路上看水
- STL源码剖析总结
- 在VC中更改可执行程序的图标
- linux一些问题解决方法的收集
- 线程池服务程序设计
- cuda中的纹理内存 二维纹理绑定错误
- 一步一步创建GStreamer插件
- interviewstreet-median -类别search
- 逆向之hash算法 ,逆向之选择排序 ,逆向之快速排序
- 在 x86 上面交叉编译 gstreamer for arm(zz)与MIPS平台上的编译(原)
- 反射 笔记
- 小宝,小宝,我爱你
- 宿命论毫无意义