协程

协程的特点:

  1. 线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换。
  2. 线程的默认Stack大小是1M,而协程更轻量,接近1K。因此可以在相同的内存中开启更多的协程。
  3. 由于在同一个线程上,因此可以避免竞争关系而使用锁。
  4. 在非 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

https://www.codedump.info/post/20190501-lua-stream/

https://kaixue.io/kotlin-coroutines-1/