协程的调度好像最终也是基于线程池的,那么为什么协程就会优于线程呢?

来源:7-6 协程的调度2

慕姐9315664

2019-06-29

看了网上的很多文章,基本都是说协程是可挂起的轻量级线程. 那到底协程本质是不是就是能比较高效地调度线程池. 总感觉协程的概念比较模糊,希望老师能解答一下.

写回答

1回答

bennyhuo

2019-06-29

咱们先来考虑下,线程比进程轻量,但线程是运行在进程上的,类似的,协程比线程轻量,协程运行在线程上。

再考虑,协程有自己的调用栈和运行状态,线程也有,但我用10000个协程协同的跑在几个线程上就可以维护10000个调用状态,这是线程池做不到的。再说的具体些,一个服务器,有请求进来,如果我们开线程处理请求,那么一个请求对应一个线程,10000个请求并发就得10000个线程,如果开协程,在非cpu密集型的业务下,其实根本不需要这么多线程的,开10000个协程提供服务,只需要几个线程就可以搞定,因为这10000个协程并不是都同时在运行,那些等待io的协程就可以挂起了。这块儿可以结合非阻塞io和io多路复用来考虑下~

0
4
bennyhuo
回复
慕姐9315664
可以这么认为,协程的场景会更多些,线程则用在更底层的地方。
2019-06-30
共4条回复

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程