并发并行同步和异步

Posted magicdata

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发并行同步和异步相关的知识,希望对你有一定的参考价值。

并发、并行、同步和异步

在学习线程和进程后,对于并行、并发、同步和异步这几个概念我们需要更深层次的了解一下。

  • 串行:同一个时间段只干一件事

  • 并行:同一个时间段可以干多件事

  • 并发 vs 并行

    • 并发是指一个时间段内,有几个程序在用一个CPU上运行,但是任意时刻只有一个程序在CPU上运行。(时间片轮转调度算法)

    • 并行是指任意时刻点上,有多个程序同时运行在多个CPU上,即每个CPU独立运行一段程序。

    • 并行的最大数量和CPU的数量是一致的。

  • 同步 vs异步:

    • 同步是指代码调用IO操作时,必须等待IO操作完成返回才调用的方式
    • 异步是指代码调用IO操作时,不必等待IO操作完成返回才调用的方式
  • 多线程:交替执行,另一种意义上的串行(python底层解释器原因)

  • 多进程:并行执行,真正意义上的并行

  • 多进程 VS 多线程:
    • 由于全局解释器GIL的存在,python的多线程无法利用多核的优势,所以不适合计算密集型任务,适合IO密集型任务。
    • CPU密集型任务适合和使用多进程
    • 进程切换代价要高于线程
    • 线程之间可以共享全局变量,但是进程不行。进程之间数据完全隔离

以上是关于并发并行同步和异步的主要内容,如果未能解决你的问题,请参考以下文章

同步与异步并发和并行阻塞和非阻塞

同步/异步/阻塞/非阻塞/并发/并行

同步 ,异步,并发/并行,串行

并发并行串行同步异步阻塞非阻塞

数据挖掘_并行并发介绍和同步异步介绍

同步异步,阻塞非阻塞,并发并行