一文彻底搞懂并发与并行

文章目录

  • 1. 并发(Concurrency)
  • 2. 并行(Parallelism)
  • 3. 总结

在Windows操作系统中,我们可以同时进行多项任务,比如观看电影、聊QQ,或者同时听歌和打游戏。尽管这些任务我们感觉在同一时间内似乎是同时进行的,但实际上,在单个CPU的计算机中,并不是真正意义上的同时执行。

在操作系统底层,CPU的执行是按照时间片的方式进行的。操作系统将CPU的时间划分成相等的时间片,并轮流分配给各个正在运行的应用程序。这样,每个应用程序都会在自己的时间片内得到CPU的执行时间,然后被暂停,等待下一个时间片再继续执行。这种轮流切换的方式使得多个任务看起来是在同时进行,给用户带来了“同时性”的感觉。

假设有一个CPU,它就像是一个电话亭,多个用户(应用程序)轮流使用电话亭里的电话,每个用户在自己的时间片内使用电话,然后让出电话亭给下一个用户。尽管每个用户都在不同的时间片内使用电话亭,但由于切换速度非常快,用户无法感知到这种切换,尽管在Windows操作系统中我们可以看起来同时进行多项任务,但实际上是通过CPU时间片技术实现的,并发地完成的。

并发关注的是多个任务之间如何交替执行,而并行关注的是多个任务之间如何同时执行。

1. 并发(Concurrency)

  • 并发是指多个任务交替执行的一种情况。在并发中,多个任务可能在同一时间段内交错执行,但并不一定同时执行。
  • 并发通常是针对于单核(单个CPU)或有限数量核心的情况而言的,其中一个CPU在不同任务之间快速切换,以实现多个任务之间的交替执行。
  • 并发关注的是任务之间的逻辑关系和调度,多个任务之间可能共享资源,需要通过同步机制来避免竞态条件和数据冲突。
  • 并发可以提高系统的吞吐量和性能,但并不一定能够加速单个任务的执行速度。
    在这里插入图片描述

2. 并行(Parallelism)

  • 并行是指多个任务在同一时间段内同时执行的一种情况。在并行中,多个任务真正同时执行,各自独立地运行在不同的处理单元上。
  • 并行通常是针对于多核(多个CPU)或分布式系统而言的,其中每个处理单元都可以独立地执行任务,不需要互相干扰或竞争资源。
  • 并行关注的是任务的同时执行,各个任务之间相互独立,不需要同步或通信,因此可以充分利用系统资源提高任务的执行速度。
  • 并行可以显著提高单个任务的执行速度,特别是对于需要大量计算的任务或数据密集型任务而言。
    在这里插入图片描述

3. 总结

  • 并发是指任务之间可能交替执行,多个任务共享CPU时间片;并行是指多个任务在同一时间段内真正同时执行,各自独立运行在不同的处理单元上。
  • 并发是在单个处理单元上进行任务切换和调度,通过时间片轮转等方式实现任务的交替执行;并行是通过多个处理单元同时执行任务,各自独立地运行,不需要任务切换。
  • 并发更注重于任务之间的逻辑关系和资源共享,需要考虑同步和互斥机制;并行更注重于任务的同时执行和提高系统性能,不需要考虑同步和通信的开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/493351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯————递归反转单链表的一部分

递归反转单链表已经明白了&#xff0c;递归反转单链表的一部分你知道怎么做吗&#xff1f; 一、反转链表Ⅱ 题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反…

JSON:简介与基本使用

目录 什么是JSON&#xff1f; JSON的基本结构 JSON的基本使用 在JavaScript中使用JSON 创建JSON对象 解析JSON字符串 生成JSON字符串 在其他编程语言中使用JSON 总结 什么是JSON&#xff1f; JSON&#xff0c;全称为JavaScript Object Notation&#xff0c;是一种轻量…

matlab经验模式分解的R波检测算法

1、内容简介 略 56-可以交流、咨询、答疑 2、内容说明 略 心血管疾病是威胁人类生命的主要疾病之一&#xff0c;而心电信号&#xff08;electrocardiogram, ECG&#xff09; 则是评价心脏功能的主要依据&#xff0c;因此&#xff0c;关于心电信号检测处理的研究一直为各方所…

这个元宵节,被云开发者安排了

元宵节快乐&#xff0c;同学们&#xff01;今天吃的汤圆都是什么馅儿的&#xff1f; 都说过了元宵&#xff0c;这个年才算是正式过完&#xff0c;2024年就算是正式开启。学堂君这里也准备了一份专属于开发者的小礼物&#xff0c;作为一点心意。 欢迎私信&#xff0c;发送暗号…

matlab 三质量-弹簧系统受激振力

1、内容简介 略 44-可以交流、咨询、答疑 建立系统运动方程&#xff0c;研究固有频率和对应主振型 2、内容说明 略 三质量&#xff0d;弹簧系统受激振力&#xff0c;并不考虑各自的阻尼。建立系统运动方程。 解&#xff1a;由于阻尼对固有频率没有影响&#xff0c;故本文不…

ClickHouse 指南(三)最佳实践 -- 主键稀疏索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中&#xff0c;我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

构建SatelliteRpc:基于Kestrel的RPC框架(整体设计篇)

背景 之前在.NET 性能优化群内交流时&#xff0c;我们发现很多朋友对于高性能网络框架有需求&#xff0c;需要创建自己的消息服务器、游戏服务器或者物联网网关。但是大多数小伙伴只知道 DotNetty&#xff0c;虽然 DotNetty 是一个非常优秀的网络框架&#xff0c;广泛应用于各种…

2024最新前端面试题

一、css 浏览器渲染机制 定位margin 定位transform flex布局 二、js 数组是属于Object类型的&#xff0c;也就是引用类型&#xff0c;所以不能使用 typeof 来判断其具体类型。下面这些方法是判断数组的几种方法&#xff1a; 1、instanceof运算符 主要是判断某个实例&#xff08…

腾讯位置服务使用

1、有账户直接登录&#xff0c;没有账号&#xff0c;注册账号 2、创建应用&#xff0c;生成key值 3、分配额度 4、小程序添加合法域名&#xff0c;即可调用使用 查阅腾讯位置服务官方文档&#xff0c;即可使用 将下载下来的sdk放到src/libs文件夹下 import QQMapWX from ../..…

【wu-acw-client 使用】案例

wu-acw-client 使用 项目介绍&#xff0c;使用acw-client&#xff0c;创建对应Java项目的增删改查&#xff08;ORM&#xff1a;Lazy ORM、mybatis&#xff09;&#xff0c;项目模块架构&#xff1a;mvc、feign、ddd 演示项目环境&#xff1a;idea 、mac、mysql、jdk17 spring …

抖音视频下载工具|视频内容提取软件

引言部分&#xff1a; 针对抖音视频下载需求&#xff0c;我们团队自豪推出一款功能强大的工具&#xff0c;旨在解决用户获取抖音视频繁琐问题的困扰。我们通过基于C#开发的工具&#xff0c;让用户能够轻松通过关键词搜索实现自动批量抓取视频&#xff0c;并根据需求进行选择性批…

壹[1],图像源

1&#xff0c;工具名称:图像源 2&#xff0c;参数说明 2.1&#xff0c;图像源 注&#xff1a; 本地图像&#xff0c;使用本地图片以及本地图像文件夹 相机&#xff0c;连接的相机 SDK&#xff0c;使用相机的SDK&#xff0c;而不是海康SDK 2.2&#xff0c;像素格式 注&…