• 并发和并行的区别


    并发(concurrency)和并行(parallellism)是:

    1. 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
    2. 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件
    3. 解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

    所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

    无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务

    一 并发:是伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发

    举例(单核+多道,实现多个进程的并发执行):

    egon在一个时间段内有很多任务要做:python备课的任务,写书的任务,交女朋友的任务,王者荣耀上分的任务,

    但egon同一时刻只能做一个任务(cpu同一时间只能干一个活),如何才能玩出多个任务并发执行的效果?

    egon备一会课,再去跟李杰的女朋友聊聊天,再去打一会王者荣耀....这就保证了每个任务都在进行中.

    二 并行:同时运行,只有具备多个cpu才能实现并行

    单核下,可以利用多道技术,多个核,每个核也都可以利用多道技术(多道技术是针对单核而言的)

    有四个核,六个任务,这样同一时间有四个任务被执行,假设分别被分配给了cpu1,cpu2,cpu3,cpu4,

    一旦任务1遇到I/O就被迫中断执行,此时任务5就拿到cpu1的时间片去执行,这就是单核下的多道技术

    而一旦任务1的I/O结束了,操作系统会重新调用它(需知进程的调度、分配给哪个cpu运行,由操作系统说了算)

    可能被分 配给四个cpu中的任意一个去执行

  • 相关阅读:
    resourceTree PuTTY/Plink
    error: src refspec 202110221_v1_master does not match any error: failed to push some refs to 'https://gitee.com/simadongyang/m9v1.0'
    go笔记10
    go协程池
    go笔记08
    go笔记06
    go笔记04
    go笔记03
    Git常用命令一
    ajax调用实例
  • 原文地址:https://www.cnblogs.com/alexstraze/p/9935231.html
Copyright © 2020-2023  润新知