协程是什么
百度了下,有人说是用户态的轻量级线程,也有人说是一个逻辑控制需求。
可能不同的解说是从实现的角度来区分的。本意应该是差不多的。
应该是有些编译器是通过用户态的轻量级线程实现的,有些则是通过逻辑控制实现的(比如函数性语言)
总之, 协程是轻量级的用户态切换的一种程序。本身拥有栈和数据。
协程的特点
- 无需线程上下文切换的开销
- 无需原子操作锁定及同步的开销
- 方便切换控制流,简化编程模型
- 高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理。
协程的性能
瓶颈在于用户态线程的极限