326 字
2 分钟
协程比线程更高效的原因是什么?

协程比线程更高效的原因是什么?#

协程比线程更高效,因为它们是轻量级的,可以挂起和恢复而不会产生上下文切换的开销。这意味着它们可用于执行否则会阻塞线程的任务,而不会导致相同的性能损失。这句话是什么意思呢?我们都知道,线程是操作系统管理的,而协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行),这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。稍微总结下,大致就三个特点:

  • 协程是轻量级的,创建一个线程栈大概需要1M左右,而一个协程栈大概只需要几K或者几十K
  • 减少了线程切换的成本,协程可以挂起和恢复,它不会产生额外的开销,由程序自身控制
  • 不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
协程比线程更高效的原因是什么?
作者
强人自传
发布于
2021-10-16
许可协议
CC BY-NC-SA 4.0