C++并发编程实战 (1) Concurrency in C++

本文介绍了C++中的并发编程,包括多进程和多线程的概念。多进程适合网络多机器计算,而多线程在同一内存空间内共享数据,允许更直接的交互。线程设计可以从程序结构或性能考虑,并发带来的问题包括线程间的固有开销。通过实例展示了如何创建和管理线程,以及使用Mutex和Future进行同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

并发方式

目前来看并发方式有两种,多进程并发和多线程并发。

多进程并发

在这里插入图片描述这种方法可以被用在基于网络的多机器协同计算上,但是数据交互需要时间。

多线程并发

在这里插入图片描述两个thread在同一个process里。Threads are much like lightweight processes.
多线程之间共享了一个内存空间,全局变量仍然是全局的,指针可以用来进行线程间交互。这种方法对数据保护就差很多。
在不同的进程中,同一个位置的数据可能对于不同线程具有不同的内存地址。

设计思路

设计思路可以从程序结构上进行线程划分而不考虑throughput。
也可以从performance来进行考虑,为了提高计算速度,我们有两种思路:task parallelism是把task分为不同部分然后每一部分并行,这设计起来很复杂。另一种是data parallelism,这种就可以用同样的方法处理一个数据的不同部分,设计起来很简单。当然这也与我们需要执行的任务相关。数据并行可以增加系统的吞吐量,使得视频等内容的实时处理和显示成为可能。

存在的问题

多线程编程实际上存在一些固有时间开销。

例子

#include <iostream>
#include <thread>
void hello()
{
   
std::cout<<"Hello Concurrent World\n";
}<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值