stpool是一个轻便高效的动态跨平台的线程池/任务池库.
常规线程池的缺点:
1. 总是启动时候就开启固定数目的线程,而不管系统的繁忙状态
(这是很浪费系统资源的).
2. 当任务繁重的时候,即使线程池被设计成可继续添加更多线程来服务
,由于实时服务状态暴漏给 用户的太少,所以线程添加数目会给用户会
带来额外的编程麻烦, 而且性能不怎么好
(对应用的扩展性太差,同时外在人工干预性太强)
如果你在寻找一个具有如下特性的线程池库:
1. 系统空闲时候线程能自动退出.任务到来时候自动启动线程服务
2. 线程池自动根据任务执行时间和数量智能启动合适的线程数目来服务.达到最好的调度性能
3. 能随时调整和控制线程池中服务线程上下限
4. 跨平台,同时支持 c, c++
那么stpool满足你的要求.
(你只管提交你的任务,其他所有你关心的,需要的特性, 以及你认为的瓶颈stpool替你解决)
线程池的难点在于:
1.怎样动态创建线程执行任务,因为任务运行时间不一,即使同一类型的任务,因为逻辑的
触发条件不一致,可能导致执行时间千差万别, 更别说各种类型不一致的任务同时投递到一个线程池中。
2. 对于大量任务投递进来时候,到底该创建多少线程来服务? 仅仅根据任务数量开启对应的
线程数是肯定不行的.
本线程池解决了这些难点,而且跨平台.线程池动态创建线程,动态销毁, 在系统空闲时候,
耗费系统资源极小.基本为0,同时在某个时间点大量并发任务产生时候,又能快速跟进提供固定线程
始终不退出的线程池的优点,同时会根据任务状态和多少智能创建线程调度任务.
. 库内容
stpool.h (头文件,组件API集合描述)
WIN32 LINUX 其它支持(ARM, IOS, ...)
libstpool.lib libstpool.a @email<piggy_xrh@163.com>
libstpool.dll libstpool.so
特性:
1. 采用c语言编写,提供丰富的API接口. (已c++接口支持)
2. 对os层进行了抽象,使具有良好的跨平台的能力(支持win32,linux,unix,arm)
3. 轻便快速, API接口自然易于使用,可直接商用,支持32位,64位系统
4. 能随时调整和控制线程池的线程数目, 内部已智能动态维护力求使其占用
最小的系统资源来最快速调度任务
. 5. 支持优先级任务,同时内置内存对象池,减少运行时间长带来的内存碎片
6. 线程池能同时支持任意类型的任务, 一个线程池中如果加入延时的,和非延时的,
以及延时到一定程度的等各种不同类型的任务,stpool都能完美的工作.能选择最合适
的线程数目来提供服务 (可自行编写demo连接debug库进行实时监控验证)
应用场景:
适合间歇性或者持续性的并发程度高,任务执行时间较短的应用系统.
比如下面一些常用的应用场景.
1.高并发服务器,利用线程池来提高响应度
2.在没有asio的系统上利用线程池实现asio是对用户大量回调的反馈
3.对应用数据的预处理,比如web服务用户接入时需要用户验证等都可以作为
预处理等放入线程池处理,完成后再放入统一的事件调度器中(如libevent)
,提高web高并发访问.
4.并行计算, 如在CPU冗余的情况下进行数据并行帧数据编解码.
5.网络爬虫或者文件并行搜索,下载等
6.临时多任务处理加速.(比如: 程序启动时按任务进行服务加速,多视频通道打开加速)
下载:
http://down.bccn.net/7385.html
http://www.oschina.net/code/snippet_1987090_44422