主题:谁能给个估算 -- ppw
尤其是Scalability issue。所以好的server program现在都使用Thread pool模型。高级的Thread pool可以根据当前硬件情况来动态改变Thread数量,以期达到最优化效果。Thread太多了,消耗内存不说,并且CPU时间都用来做thread context switch了,干不了什么“正经”事儿。
我一哥们号称Visual C++ 天下独步,曾经跟我吹牛,说他那个程序一但运行起来,上千条Thread,复杂的不得了云云。
其实他这个程序设计得非常有问题。最常规的做法应该是将那些任务放到一个或几个Task Queue里,然后一定数量的Thread不停的从中Take task,来异步完成。(他的C++功力总体上我还是比较佩服的)
.NET的Thread pool 就是这个概念。QueueUserWorkItem就是前台将任务放到Task Queue里,后台Thread pool会自动接管这些个任务来异步完成。.NET的Thread pool比较智能,会根据任务以及硬件情况(CPU数量和Memory)自动伸缩。比我当年写的“半自动”Thread pool又前进了一步。不过.NET每一个Process只能有一个Thread pool,有时候不是非常灵活。
Java现在也提供了类似的Thread pool,只是我一直没有试过!
- 相关回复 上下关系8
谁能给个估算 ppw 字56 2004-09-24 16:11:51
😉Network是IO Intensive,而不是CPU intensive. Highway 字397 2004-09-25 20:52:58
其实网络传输最累CPU的不是带宽,而是下载程序的多线程 老兵帅客 字279 2004-09-25 21:35:44
😁是啊,那种每个Thread-per-request的线程模型有着不小的问题
这类系统级的任务最好由系统来提供标准服务 老兵帅客 字138 2004-09-26 09:15:08
嗯, 这样讲得很透彻 ppw 字21 2004-09-25 21:15:23
😥TCP/IP通讯和浮点计算有什么关系? 老兵帅客 字70 2004-09-24 17:24:18
想知道 ppw 字41 2004-09-24 19:17:32