您的位置:程序门 -> vc/mfc -> 网络编程



完成端口,建立cpu数×2个线程,好像有几个线程是永远没机会执行的?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


完成端口,建立cpu数×2个线程,好像有几个线程是永远没机会执行的?
发表于:2007-07-31 11:20:32 楼主
按照说法,调用createiocompletionport时,指定的并发线程数=cpu数,

而创建的工作线程数=cpu数×2

而工作线程又是“后进先出”的。

假设cpu为2个,那并发线程数=2,工作线程数=4,那样的话,有2个线程是永远没有机会执行的。

既然这样,为什么要创建那么多工作线程呢?

另外,线程数的最佳值为cpu数×2,这个结论是怎么来的?
发表于:2007-07-31 11:47:321楼 得分:0
书上的说法,是防止有些线程进行sleep(),或waitforsingleobject()。

但即使那些线程在sleep,对完成端口来讲,它们也是活的,难道这时会激活等待队列里的线程??
发表于:2007-07-31 11:58:412楼 得分:0
sleep(),或waitforsingleobject()并不耗用cpu的时间片,当然此时可以执行其它代码了


快速检索

最新资讯
热门点击