并发与并行(concurrency and parallelism)的思考理解

在游戏开发中如何使用Unity3D引擎开发麻将游戏 总体来说使用Unity3D引擎开发麻将游戏需要开发人员熟练掌握Unity3D的各种功能和API,并且需要深入了解麻将游戏的规则和背景,以便实现一个质量高、玩法丰富的游戏。在测试的过程中我们需要检查游戏是否符合规则,保证游戏逻辑的正确性,并检查游戏的UI是否和设计图一致,保证游戏的可玩性。Unity3D引擎是一个高度集成的游戏开发工具,可以为开发人员提供很多强大的工具和功能,包括3D建模、物理模拟、粒子系统、动画等等,在游戏开发中可以提高开发效率和游戏质量。在开始开发之前我们需要明确游戏的需求和功能。 阅读详情

附上一个基本概念:
并发(Concurrent)与并行(Parallel)的区别。

两本书里的解释:

1. 《疯狂java讲义》:

  • 并发:在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。
  • 并行:在同一时刻,有多条指令在多个处理器上同时执行。

2.《深入理解计算机系统》

  • 是一个通用的概念,指一个同时具有多个活动的系统;
  • 用并发使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。

综合以上定义来看

其实深入理解计算机系统的定义更加基础,而疯狂java讲义比较易懂。

  • 从需求来看:
    • 想要计算机做得更多。
    • 想要计算机运行得更快。
  • 当处理器同时能够做更多事情时,这两个因素都会改进

解释:

  • 同时能做各种事情,也就是多核带来的性能提升,或者是单核的运算速度(频率)提升,这两个方式都能带来总性能的提升。

虽然并发原理的形成和研究已经超过50年的时间了,但是知道多喝和超线程系统的出现才极大地激发了人们的一种愿望,即找到书写应用程序的方法利用硬件开发线程级并行性。

理解:

  • 单核的频率提升已经出现了瓶颈,但是多核提升却很经济,因此能带来总性能的提升。
  • 在单核上使用多进程,主要是能够同时进行多项服务,但是在性能上并没有太大的提升,主要是在I/O操作上有所提升:
    • 在CPU等待I/O操作时不再等待,而是执行其他代码,现在这种优化一般在语言层面,比如java的NIO,以及golang的IO操作。这也是为什么在多核之前应用层面的程序员不太关注并发的原因。
    • 但是在其他方面,比如你计算1+2+…+100,即使你用单核并发,但是运算依旧是一个CPU的运算,不会带来提升,甚至更慢。
  • 在多核上使用并发进行并行运算,才能真正的提高运算性能,而不是减轻I/O操作导致的CPU等待。
    • 超线程:超线程通过共享单处理器的一部分原件,实现比如一个进程(线程)必须等到某些数据被装载到高速缓存中,那CPU就可以继续去执行另一个进程(线程)。从而实际上可以并行核心数的双倍的线程(这里的线程不同于程序的线程,层面不一样,但是概念相同)。比如四核8线程,就可以并行(在同一时刻,有多条指令在多个处理器上同时执行)执行8个线程。
目标检测 RT-DETR(2023)详细解读 在使用了这个技巧后,显然训练过程中,类别的标签不再是此前的0和1离散值,而是0~1的连续值。关于 Query Selection(查询向量选择),大家应该并不陌生,这个方法可谓在DETR领域大杀四方,如DAB-DETR对查询向量进行重构理解,将其解释为Anchor,DN-DETR通过查询降噪来应对匈牙利匹配的二义性所导致的训练时间长的问题,DINO提出从Encoder中选择Top-k特征进行学习等一系列方法,这都无疑向我们证明,查询向量很重要,选择好的Query能够让我们事半功倍。在RT-DETR中, 阅读详情

相关推荐

Jenkins离线安装保姆级教程:从下载.war包到SVN+Maven项目一键部署(附避坑脚本)

本文详细介绍了Jenkins离线安装的全流程,包括.war包下载、SVN+Maven项目配置及自动化部署。特别针对内网环境提供解决方案,涵盖插件管理、开发工具链配置、构建触发器和SSH部署等关键步骤,帮助企业在网络隔离环境下实现高效持续集成。

weixin_30096975的博客 373

如何向纯洁的女朋友解释并发与并行的区别?

原文链接:并发与并行的区别 现在我们都说设计可并行、高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二者的区别,又感觉没办法给出一个非常清晰的描述。 那么什么是并发?什么又是并行呢?并行的概念比较简单,并行总是和执行(executions)相关,很多东西同时执行就是并行;而并发则是通过一些方式...

云原生实验室 1442

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4143

程序设计中并发(Concurrency)和并行(Parallelism)的区别

更高层面的并发设计,他脱离了线程和进程层面,他把某个具体的任务和具体的处理机提前建立一个对应的map关系,任务处理机仅仅负责处理和他建立对应关系的任务,而对单个处理机而已仅仅是一个串行的任务处理机,这样整个并发模型的构建具有很强的灵活性和稳定性,尤其适应企业分布的环境的任务处理。因此,在需要并发处理的时候,多进程是一种更好的选择。:基于多线程的并发任务设计,把不同的任务分配给操作系统某个进程的多个线程去处理,这样,各个线程只负责处理已分配的独享权限的任务,从而实现在单台处理机上的任务并发。

m0_46256255的博客 1576

CXL ALMP(ARB/MUX Link Management Packet)理解

ALMP(ARB/MUX Link Management Packet) 是CXL协议中由ARB/MUX层生成和处理的专用管理报文,用于协调链路电源状态切换(如L0s/L1)和虚拟链路状态机(vLSM)同步。ALMP是ARB/MUX层的控制平面报文,专用于以下场景:协调多协议(CXL.io、CXL.cachemem等)的链路状态切换(如L1进入/退出)。维护各协议独立的虚拟链路状态机(vLSM) 状态同步。在物理层(PHY)与链路层(Link Layer)之间仲裁电源管理请求。

Summer的博客 1198

GradNorm:Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks,梯度归一化

文章目录引言gradnorm   gradnorm论文地址:https://arxiv.org/abs/1711.02257   gradnorm是一种优化方法,在多任务学习(Multi-Task Learning)中,解决 1. 不同任务loss梯度的量级(magnitude)不同,造成有的task在梯度反向传播中占主导地位,模型过分学习该任务而忽视其它任务;2. 不同任务收敛速度不一致;这两个...

Leon_winter的博客 2万+

并发(concurrency)和并行(parallelism)的区别

经常看英文文献的同学会发现计算机里面有两个非常容易混淆的词汇:concurrency和parallelism 首先看看中文翻译:concurrency指并行(同时运行),parallelism指并发(同时发生)。 那么两者有什么区别呢,可以说这两个概念完全是两个不同的概念,并发(concurrency)指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但是从微观上

crysis008的专栏 2447

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7661

并发与并行 (Concurrency and Parallelism)

GO 语言中, Goroutine 的出现使我们设计和实现并发程序变得十分方便,那么并发和并行,应该怎么理解和区分呢? 下面这段文字,摘抄自网络文章:goroutine背后的系统知识 并发与并行 (Concurrency and Parallelism) 并发是指程序的逻辑结构。非并发的程序就是一根竹竿捅到底,只有一个逻辑控制流,也就是顺序执行的(Sequential)程序,在任何时刻,程序...

hsk_scnu 657

Swin Transformer注意力计算复杂度为何比全局注意力少那么多?

本文对比分析了Vision Transformer(ViT)和Swin Transformer的计算复杂度。ViT采用全局注意力机制,计算复杂度为4[hwc^2]+2[(hw)^2C],当图像尺寸较大时计算量显著增加。而Swin Transformer采用窗口注意力机制,将图像划分为M×M的窗口(如7×7),计算复杂度降为4[hwc^2]+2[(hw)(M*M)*C]。以224×224图像为例,Swin Transformer的计算量比ViT减少约900倍,大幅节省了计算资源。文章通过矩阵乘法运算详细推导了

人工智能研究所的博客 62

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。

吻等离子的博客 3355

并发 vs 并行 (Concurrency Is Not Parallelism)

前言 不知你是否曾经下列这些疑问? 并发与并行性有何关系? 什么是同步和异步执行? 如何区分并发与并行? 线程如何与所有这些概念一起使用? 并发 并发性意味着应用程序同时(并发地)在多个任务上取得进展(is making progress )。好吧,如果计算机只有一个CPU,那么应用程序可能不会在同一时间对多个任务进行处理,但是在应用程序内部,同时处理多个任务。在开始下一个任务之前,它不会完全完成一个任务。 让我们举个现实生活中的例子:有个挑战要求你既要吃掉一整块蛋糕,又要唱一整首歌。如果你是最快唱完整

楼上小宇_home 791

SAP Word 模板与 ABAP XML 数据流合并机制深度解析

Office Open XML 标准把一个.docx拆分成多个部件(document.xml、customXml\item1.xml 等),天然支持命名空间与 XPath;Word 在渲染时,会扫描<w:sdt>(结构化文档标签)与来确定绑定关系;在 ABAP 端,通过简单字符串替换与 XSLT 变换即可完成数据灌入,无需 COM Automation,安全且易于调试。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 371

【JavaGuide学习笔记】理解并发(Concurrency)与并行(Parallelism)的区别

并发(Concurrency):指两个或多个作业(任务、进程或线程)在同一时间段内执行。这并不要求它们在每一个精确的瞬间都同时运行,而是允许它们交替进行,看起来像是“同时”在处理多个任务。例如:在单核CPU上,通过时间片轮转(time slicing)机制,系统快速切换任务A和任务B,让它们在短时间内轮流执行。用户感知上像是同时在跑,但实际上在任意一个微观时刻,只有一个任务在执行。并行(Parallelism):指两个或多个作业在同一时刻真正同时执行。

rzjslSe的博客 772

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何理解并发(Concurrency)和并行(Parallelism)的区别

并发:一个人干多件事(并不一定能缩短做一件事的时间,比如烧水和看报纸,烧水的时间并不会因为看报纸或者做其他事情而缩短)并行:多个人干一件事(就像盖房子,码砖的人多了,就会缩短建造时间)...

kevin的博客 6312

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

转载:并发(concurrency)和并行(parallelism)的区别

原始链接:https://blog.youkuaiyun.com/abccheng/article/details/50913795?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.control Concurrency Is Not .

黄道婆的专栏 316

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Concurrency != Parallelism

前段时间在公司给大家分享GO语言的一些特性,然后讲到了并发概念,大家表示很迷茫,然后分享过程中我拿来了Rob Pike大神的Slides 《Concurrency is not Parallelism》,反而搞的大家更迷茫了,看来大家丢了很多以前的基本知识。后来我就把Pike大神的slide和网上的一些牛人关于Cocurrency和Parallelism的观点做了整理,最终写了本文。 ...

dashishao9295的博客 355

还在疑惑并发和并行?

OK,如果你还在为并发(concurrency)和并行(parallelism)这两个词的区别而感到困扰,那么这篇文章就是写给你看的。搞这种词语辨析到底有什么意义?其实没什么意义,但是有太多人在混用错用这两个词(比如遇到的某门课的老师)。不论中文圈还是英文圈,即使已经有数不清的文章在讨论并行vs并发,却极少有能讲清楚的。让一个讲不清楚的人来解释,比不解释更可怕。比如我随便找了个网上的解释: ...

weixin_30251587的博客 103

并发与并行编程入门

这句话的意思是,在2000年代中期,虽然我们根据摩尔定律享受了CPU性能的提升,但CPU时钟速度(Clock Speed)由于物理限制(发热、功耗等)无法继续提高,单核性能的增长已经停滞。Task是执行单元的抽象,CSP通道是通信规则的抽象。核心特点:这是最传统的并发模型,使用操作系统提供的“线程”作为执行单元,并通过互斥锁(Mutex)、信号量(Semaphore)等锁机制实现并发。与Task的关系:线程与锁模型是最底层的并发形式,Task是对线程池模型的抽象,Task在线程上“实现”。

2404_84768005的博客 1386

CppCon 2024 学习:Interesting Upcoming Features from Low Latency, Parallelism and Concurrency

在多线程程序中,经常会出现这样的需求:如果用普通变量或非原子更新: 在并发下会出现:虽然 能解决正确性问题,但:Atomic min / max 在以下领域非常常见: 2⃣ 返回值语义(非常重要) 与 一致:标准还会提供: 四、内存序(memory_order)语义 默认版本 等价于: 显式版本的使用原则 统计 / reduction → 同步 / 发布语义 → / 数学上可以理解为: atomicity;≠;ordering \text{atomicity} ;\neq; \text{ord

虾球 1127

Parallelism != Concurrency

这是14年8月份的时候收藏的一篇博文, 但是很遗憾, 现在作者的blog已经无法访问了. 源地址是 http://wangcong.org/blog/archives/2054 Parallelism != Concurrency Posted in Programming at July 16th, 2012 / 2 Comments » Parallelism,中文一

铁匠的七寸宫 763

GoLang并发与并行

👉 直接这样说:在 Go 中,并发是通过 goroutine 实现的任务组织方式,而并行是通过 GMP 调度器在多核 CPU 上同时执行多个 goroutine。goroutine 本身不保证并行,是否并行取决于运行环境和调度器配置。

ruxing.li 的专栏 304

并发(concurrency)与并行(parallelism)

并发和并行并不是一个意思。 并行:是严格的多CPU同时执行。 并发,并不是严格的同时执行,而是以时间片为单位交替执行,所以不需要多处理器。 例子: 一个并发程序是指能同时执行通常不相关的各种任务。以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。一个组件有可能要处理多个用户聊聊;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的

595

并发(concurrency)和并行(parallelism)

对于并行和并发一直存在困惑:什么样的代码支持并行,什么样的代码支持并发,并发和并行是不是两个平行的概念,知乎用户dozer.cc的回答并发与并行的区别? 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的...

Qq250682744的博客 397

CppCon 2022 学习:HPX A C++ Library for Parallelism and Concurrency

项目说明数据一个线性序列(如顺序for_eachwhile (b!,元素一个一个处理并行序列的元素可以同时在多个线程处理,提高性能lambda表示对每个元素的操作逻辑目标循环并行化以加速计算,尤其是大序列或复杂计算Executor是 HPX 任务调度的核心抽象:控制任务在哪执行(CPU 核心 / NUMA 节点)控制任务何时执行(同步 / 异步)控制任务如何执行(单个 / 批量 / future / sender)并行算法结合 Executor支持parpar(task)

虾球 469
上一篇: Mongo入门:数据去重之MapReduce,Aggregation的简单使用(另附相关网络资源)
下一篇: C语言:指针数组、const指针+计算机系统:字节顺序
V_code
博客等级 码龄12年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值