Go语言并发——并发模型初始

常见并发模型:

  1. 多进程:多进程是在操作系统层面进行并发的基本模式,同时也是开销最大的一种模式,由每个CPU核心直接管理每个进程。进程间互不影响。
  2. 多线程:多线程也是在操作系统层面的并发模型,同时是暂时使用得最多的一种,它是在进程之下开的一个线程来执行操作和处理,但是开销依然很大。高并发模式下,效率影响也很大。
  3. 基于回调的非阻塞/异步IO:由于使用多线程会很快消耗服务器的内存与CPU资源,而这种模式通过事件驱动方式来使用IO,尽可能的减少使用线程,降低开销。目前比较火的Node.js就是这种并发模式
  4. 协程:协程的本质是一种用户态线,不需要操作系统来抢占式调度,在真正的实现寄出于线程中。因此开销极小。

并发与并行:

  1. 并行:由于现在的CPU都是有多核的,而把每个核心为它分配一个任务,让它去执行这个任务,这就叫并行。
  2. 并发:一个CPU只有一个核心,但是把它对每个进程的执行分成一个一个时间片,比如让进程A在1秒内执行,然后把执行交给进程B执行1秒,这样来回交替执行。其实在一定时间永远只有一个进程在执行,我们之所以看起来好像同时执行了多个进程其实,只是计算机的运行速度够快,快到人眼睛难以分辨,所以我们认为是多个任务在同时执行。
  3. 用下面的图来解释什么叫并发什么叫并行吧
    Go语言并发——并发模型初始