所以我是在线程池模式使用协程,线程不需要反复创建,线程池里就那么几个线程,一般是等于核数。它们的调度基于epoll,实现协程后,epoll就成了协程调度器。
系统启动后,所有的线程都在epoll_wait。直到出现一个被激活的fd,一个线程得到它的context,就是协程,然后转入这个协程,直到它需要再次IO,就会yield该线程,把自己排入epoll队列,线程跑去epoll_wait。这个线程下次可能得到另一个context,这个协程下次也可能被另一个线程捕获。
这种不绑定线程的协程体系,最省事,不需要写额外的调度和负载均衡策略。
【 在 finlab 的大作中提到: 】
: 所以这里的问题还是现在单个线程占用的资源过多,线程是个比较“重”的调度单位
: 如果能低成本的创建并调度线程,那么你现在这种模式就非常简洁实用。
: cpu硬件的趋势就是核心越来越多,充分利用多核比挖掘单核效率更重要。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*