如题目!!

解决方案 »

  1.   

    Google 就好
    http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=leader+follower+thread+pool
    http://www.zeroc.com/vbulletin/archive/index.php/t-371.html
      

  2.   

    完成端口本身就是一个L/F的线程池模型。比如现在创建了2个完成端口线程,,当线程1从GetCompletionQueue这里返回后,如果线程1的处理过程没有超过某个时间段(这个时间段具体多大不清楚),而是很快就返回继续GetCompletionQueue,那么下一次从GetCompletionQueue这里返回的还将继续是线程1,也就是说,OS会一直让线程1来从GetCompletionQueue这里返回,以减少线程的CONTEXT切换代码如果线程1的的处理过程比较长,那么系统会让线程2从GetCompletionQueue这里返回的,,即使你设置在IOCP上同时只能运行一个线程
    简单地描述:线程池某个时候有个LEADER,下面有一群FOLLOWER,当LEADER处理的时候,发现自己可以完全应付目前的任务,很快就可以完成,那么他不会让下面的FOLLOWER去干活的,而是让他们休息。当新来了一件任务,LEADER发现自己要处理这个任务需要比较长的时间,那么他就自动把自己降低为FOLLOWER去处理这新的任务,然后从FOLLOWER中产生一个新的LEADER,
    好处就是减少context switch和高速患存的更新代价。