架构师面试(五):理解协程

问题

聊一下对 “协程” 的理解。

答案

协程 是 轻量级的用户级线程。

关键点有两个:

1、【轻量级】:Linux的线程默认大小是 8M,而协程的大小是 几KB的样子,所以在程序中是可以轻松创建几十万个协程的;

2、【用户级】: 协程工作在用户态,对协程进行创建、切换和销毁时,操作系统是无感知的,也就避免了 对系统的调用。

总结: 【轻量级】和【用户级】是核心和关键。

扩展

可以再补充和加深一些内容:

我们知道协程是在用户态模拟出的一个【执行体】,但最终这个执行体还是交给了 系统级的线程运行;调度器做的核心工作就是可以在一个 系统级的线程中模拟出 多个 【执行体】出来。 那么 协程的运作模式也就有了:

(1) 1:1 模式, 即一个系统级线程只模拟出一个 协程;  (实现简单,但并发能力低)

(2) 1:M 模式,即一个系统级线程模拟出多个 协程;(实现也简单,虽并发能力高,但无法充分利用多核优势)

(3) N:M 模式,即多个系统级线程模拟出多个 协程;(实现复杂,但并发能力高,也充分利用了多核优势)

大名鼎鼎的 Go 语言中协程的运作模式即是 N:M 模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值