是否多线程能做的事情,协程也能都做到呢?

是否多线程能做的事情,协程也能都做到呢?
如果是,那么只用协程就可以不必再使用多线程了是吗?可省去效率降低和上下文切换的开销。

阅读 828
1 个回答

并不是的

  1. 协程主要解决的是I/O密集型场景下的CPU资源浪费和线程上下文切换开销问题,这主要针对Web应用的高并发场景。
  2. 对于CPU密集型场景,需要物理上的并行运算,而协程只是逻辑并行。
  3. Go语言的协程底层是多线程,所以它对CPU密集型场景也有效,但不能直接控制任务运行在哪些线程上。
  4. 在《操作系统》这门学科中的“并发程序设计”部分可以了解到进程、线程、协程的由来,重点在于“并发”和“并行”的不同。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进