支持通用框架的threadpool代码

来源:互联网 发布:澳洲甲级联赛角球数据 编辑:程序博客网 时间:2024/05/20 05:30

在编写服务器时,很多人会考虑到应用线程池来解决多线程的问题,当然我也越到了这个问题,所以顺便查找了一下linux的通用框架线程池,

并花了两天把它实现了出来,大体过程描述可以在

http://blog.csdn.net/hwalk/archive/2007/06/18/1657110.aspx 这个网址中查看流程,代码部分可以在我的资源:

http://jaff20071234.download.csdn.net/ 中下载到。

 

下面是这两天中log的描述:

 

------2010-12-1------

线程池稍微模型,但是明显存在的一个大问题是---

我的线程类实现的机制有问题:在每个start函数中创建线程,在创建线程之前,调用了sem.wait()函数,这样的话,主线程

在创建第一个thread的start函数就wait在哪里,主线程无法继续走下去了 。。。悲哀,明天继续考虑其他的方式。

---shawn

------2010-12-2------

今天已经写的差不多了,还有一些内在的小bug需要优化,可以在http://www.oschina.net/code/snippet_102078_2072或者

http://jaff20071234.download.csdn.net/可以下载到该线程池资源。

------2010-12-3------

突然又发现了一个问题,线程池内创建的线程无法具有可重用性。今天起开始改进,还有数据结构可以重新调整,查询,添加和删除的

次数比较多,所以可以尝试采用关联容器,或hash 。

bug:每次创建了这么多线程当用完后,便都没有了,虽然也没有释放线程资源,但是也不能继续使用了,所在考虑在routine中添加while循环通过调用exitthread设置循环变量为false来解决这个问题,中间差点放弃了,以为pthread很有限制,还是个人思维的限制啊 ~~·

 

okay,今天算是落幕了,性能测试也结束了,这个小小的线程池代码对我来说还是有挑战性的,代码可以在oschina上下载到所有的。

在去吃饭的路上,突然想起代码部分存留的唯一的一个bug,这次应该很确认了,虽然基本上没问题,但是为了以防万一,在0.1毫秒情况下

可能会发生的意外,我又添加了一个互斥量来解决这个问题。应该是彻底结束了,先玩转自己写的threadpool,好好享受n多线程执行n多任务的爽歪歪的感觉吧 ~~~hoho ~~~

原创粉丝点击