在大迸发的网络环境下,一个协程,被一个事件激活,就在某个线程内执行,不到IO时刻,一直都不会被调度。占死这个线程。此时期如果有别的激活,就有别的线程来干。直到它需要IO,且完不成,才会yield,下次resume不一定是哪个线程接手。
线程数=核数,线程执行期间就不会经常被打扰,发生切换,尽量减少切换开销。线程太多就会经常切换,轮流执行,才会发生切换开销问题。
线程池也避免了线程反复创建销毁的开销。一旦创建永不销毁。没事就在epoll_wait。
有啥问题?
【 在 VincentGe 的大作中提到: 】
: 那你这么做还是有问题。
: 协程不是一个独立的模块存在,它在执行时一定位于某一个线程内。它的设计本身就是单线程模型内的并发模型(不并行)
: 按照你说的,它和异步任务相似。协程调度器持有一个类似线程池的东西,将异步任务调度到某一线程线程执行。
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*