协程的调度好像最终也是基于线程池的,那么为什么协程就会优于线程呢?
来源:7-6 协程的调度2

慕姐9315664
2019-06-29
看了网上的很多文章,基本都是说协程是可挂起的轻量级线程. 那到底协程本质是不是就是能比较高效地调度线程池. 总感觉协程的概念比较模糊,希望老师能解答一下.
写回答
1回答
-
bennyhuo
2019-06-29
咱们先来考虑下,线程比进程轻量,但线程是运行在进程上的,类似的,协程比线程轻量,协程运行在线程上。
再考虑,协程有自己的调用栈和运行状态,线程也有,但我用10000个协程协同的跑在几个线程上就可以维护10000个调用状态,这是线程池做不到的。再说的具体些,一个服务器,有请求进来,如果我们开线程处理请求,那么一个请求对应一个线程,10000个请求并发就得10000个线程,如果开协程,在非cpu密集型的业务下,其实根本不需要这么多线程的,开10000个协程提供服务,只需要几个线程就可以搞定,因为这10000个协程并不是都同时在运行,那些等待io的协程就可以挂起了。这块儿可以结合非阻塞io和io多路复用来考虑下~
042019-06-30
相似问题