3.协程的优劣势

2024-07-08 15:32:52 浏览数 (2)

优点

  1. 多线程编程上手难度较高,因为调度程序过程中的任何时候都能中断线程, 必须记住‘保留锁’,保护程序中重要部分,防止多线程在执行的过程中断。
  2. 而协程默认会做好全方位保护,以防止中断。我们必须规定“显示产出”才能让程序的剩下部分运行。对它来说,无需‘保留锁’。 而在多个线程之间同步操作,协程自身就会同步,因为在任意时刻,有且仅有一个协程在运行。

总结下大概下面几点:

  • 无需系统内核的上下文切换,减小开销。
  • 无需原子操作锁定及同步的开销,不用担心资源共享的问题。
  • 单线程即可实现高并发,单核 CPU 即便支持上万的协程都不是问题,所以很适合用于高并发处理,尤其是在应用在网络爬虫中。

缺点

  1. 无法使用 CPU 的多核 协程的本质是个单线程,它不能同时用上单个 CPU 的多个核,协程需要和进程配合才能运行在多核CPU 上。我们日常所编写的绝大部分应用都没有这个必要,除非做一些密集型应用,这个时候才可能会用到多进程和协程。
  2. 处处都要使用非阻塞代码 写协程就意味着你要会写一些非阻塞的代码。

0 人点赞