C++多核高级编程 - 02 并行程序设计中系统的任务及挑战

本文探讨了C++多核编程中的并行概念,包括并发和并行的区别。并行程序设计面临软件分解、任务分解、任务间通信等挑战。在任务分解中,找到正确的多线程模型至关重要。而任务间通信,如进程间通信(IPC),需要谨慎管理以防止资源冲突。此外,识别并发任务的关系、确定进程或线程数量以及跨组件设计的沟通也是关键挑战。
摘要由CSDN通过智能技术生成

一,并行的概念

如果两个事件在相同的时间间隔内发生,则我们称他们是并发的。两个或多个任务在相同时间间隔内执行,则我们称他们是并行的。如果两个任务在同一秒并行,但其实两个任务可能在同一秒的不同部分执行。例如第一任务在第一个十分之一秒运行第二个任务则在第二个十分之一秒运行,之后又是第一个任务.... 交替运行。但由于时间较短给人的感觉还是两个任务在同时进行。时间的间隔可以放大,也可以缩小。无论任务间是不是同时进行,我们都可以认为他们是并行的。


二,并行程序设计的挑战

软件开发本身就是一种挑战。在开发过程中是否使用多核编程,如何选择多核编程都是对开发人员的一种挑战。

1,挑战 1   -   软件分解,任务分解

多线程或多处理的需要多数情况是在分解任务的过程中发现的。分解就是对于一个问题或解决方案划分成基本部分的过程。

在分解的过程中找出正确的多线程模型,对于整个软件非常重要。

一个简单的实例:

问题:我们要在规定的时间内粉刷房子内所有的房间。

问题分解

1,  油漆的颜色

2,  刷油漆的工具

3,  刷房间的先后顺序

4,  刷油漆的时间

解决方案

1,  颜色选择与家具搭配的颜色

2,  工具使用自动刷漆机, 一台或多台

3,  可以选择同时刷多个房间,也可以选择顺序一个一个刷

4,  工作时间 9:00  -   18:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值