• 串行、并行与并发的理解


    串行、并行与并发的理解

    标签(空格分隔): 串行 并行 并发


    1 串行和并行

    串行是大家排队一个一个来,并行是大家一起上。

    2 并发和并行

    概念非常相似,难以区分。分别体现在两个方面。

    • 并发(Concurrency),体现在(1)单个处理器;(2)逻辑上同步运行。
    • 并行(Parallelism),体现在(1)多处理器,多核心;(2)物理上同步运行。

    2.1 并行的理解

    并行,是真正的同时运行--在同一个时刻多个任务同时执行。例如多核处理器上,有多个线程同时执行同一段代码。单核处理器无法在同一时刻执行多个任务,因此无法并行。

    2.2 并发的理解

    并发有两种描述,一种是形容多个任务的执行状态;另一种是对“并发性”的简称。

    2.2.1 多任务执行状态

    因为处理器处理特别快,看上去像同步执行。

    • 两个或者多个任务可以在某个重叠的时间段中启动、运行、完成。
    • 并行(多个线程同时执行)一定是并发,两者是包含关系。

    3个线程由一个CPU交替执行(并发)。

    3个线程同时由多个CPU执行(并行且并发)。

    2.2.2 “并发性”的简称

    程序的部分可以无序或者同时执行,且不影响最终的执行结果,表示程序具有并发性。

    “并发性”在不同核心数计算机上有着不同的表现。对于多核CPU,可以做到真实的同时运行,即并行;对于单核CPU,可以通过多个线程切换时间片交替运行,实现并发。

    2.3 是什么让并发和并行成为了可能

    1. CPU的升级。单核CPU一次只能处理一条指令,基于此增加核心数,多线程处理任务,提高效率。
    2. 操作系统的升级。单核CPU可以通过抢占式调度实现多个线程的切换;多线程如何分配核心是有操作系统来决定,开发人员只需要创建并运行多个线程。
    3. 编程语言的升级--支持多线程。
    版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    Qtcreator中printf()/fprintf()不显示问题处理方法
    C++实现斐波那契数列
    DAPP超详细解释
    自底向上的合并排序算法
    Python 生成哈希hash--hashlib模块
    使用js的一些小技巧
    js——事件
    django学习
    js——js特效
    js--DOM学习
  • 原文地址:https://www.cnblogs.com/dtyy/p/13946790.html
Copyright © 2020-2023  润新知