协程的特点:
- 线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换。
- 线程的默认Stack大小是1M,而协程更轻量,接近1K。因此可以在相同的内存中开启更多的协程。
- 由于在同一个线程上,因此可以避免竞争关系而使用锁。
- 在非 Ring 机制支持执行权限 CPU上面实现多任务(运动手环,基于硬件限制,都是采用协同调度的架构)
适应场景:
IO阻塞(数据库读写)
计算密集型不适合.
最佳实践:
nginx+lua
kotlin,go,Quasar(java)
参考:
https://blog.youxu.info/2014/12/04/coroutine/
https://www.cnblogs.com/tohxyblog/p/10712798.html
https://my.oschina.net/u/2539854/blog/845149