并发和并行

文章探讨了并发和并行的概念,强调并发关注于处理多任务的结构设计,而并行则侧重于实际的多任务同时执行。RobPike的观点被引用,指出两者虽不相同但有关联,并发是并行的基础。
摘要由CSDN通过智能技术生成

本文基于Rob Pike 大神的观点做解读


Concurrency(并发):Programming as the composition of independently executing processes.(将相互独立的执行过程综合到一起的编程技术。)


Parallelism(并行):Programming as the simultaneous execution of (possibly related) computations. (同时执行(可能是相关的)计算任务的编程技术。)


Concurrency is about dealing with lots of things at once. (并发是指同时处理很多事情。)


Parallelism is about doing lots of things at once. (并行是指同时能做很多事情。)


Concurrency is about structure. (并发关乎结构。)


Parallelism is about execution. (并行关乎执行。)


They are Not the same, but related. (他们不相同,但是有关系。)

在这里插入图片描述

首先从程序设计结构上分析:考虑了并发 (在同一时间应对多个任务)

但在执行过程中:不存在并行 (在同一时间执行多个任务)

在这里插入图片描述

从程序设计结构上分析:符合同一时间应对多个任务 并发

从执行过程中分析:线程1和线程2可以同时执行 符合同一时间执行多个任务 是并行



并发是指:组合多个独立执行过程的编程技术,同时处理很多事情,并发更多的倾向于结构。

并行是指:同时执行多个计算任务的编程技术,能同时做很多事情,并行更多倾向于执行。


不同点:

  1. 并发更偏向于应对同一时间的事情,并行更偏向于执行同一时间的事情。
  2. 并发在程序的设计和实现阶段,并行在程序的执行阶段。

联系:并发相当于是并行的基石,有强大的基石并行才能实现。


参考:

博客

https://tonybai.com/2015/06/23/concurrency-and-parallelism/

Rob Pike 大神的演讲

https://www.bilibili.com/video/BV1EN411o7FY/?vd_source=76abf9bb9bc20b6aa372445fc31a2d96

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
并发并行编程在C++中都是现代高性能计算的重要概念,它们的目标是同时执行多个任务或操作,从而提高程序性能。 1. **并发(Concurrency)**: - 并发是指在同一时间内运行多个线程,但这些线程可能交替执行,共享同一资源。在C++中,可以使用`std::thread`库创建和管理线程,通过互斥锁(mutex)、条件变量(condition_variable)等同步机制保证数据的一致性和避免竞态条件。 - C++提供了一些线程安全的数据结构,如`std::atomic`,用于处理不可分割的操作,防止数据竞争。 2. **并行(Parallelism)**: - 并行更进一步,指的是多个处理器核心或多个硬件单元同时执行独立的任务,每个任务可以独立处理数据。C++标准库中的`std::execution`命名空间提供了控制并行度的工具,如`std::par`, `std::async`和`std::future`。 - C++17引入了`std::ranges`和`std::views`,它们使得数据流式处理成为可能,可以方便地将任务分解为可并行的部分。 3. **线程池(Thread Pool)**: - 在并发编程中,线程池是一个预先创建的固定大小的工作线程集合,任务会被提交到这个池中执行,提高了资源利用效率。 4. **并发模型(Concurrent Models)**: - C++支持两种主要的并发模型:基于线程的模型(如POSIX线程API)和基于纤维的模型(如Boost.Asio)。其中,现代C++倾向于使用基于fibers的模型,因为它对资源消耗较小,适合轻量级任务。 相关问题-- 1. C++中如何避免线程间的竞态条件? 2. C++标准库中哪些工具可以帮助管理并行任务? 3. 线程池在什么情况下比单线程执行更有效?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值