一,并行的概念
如果两个事件在相同的时间间隔内发生,则我们称他们是并发的。两个或多个任务在相同时间间隔内执行,则我们称他们是并行的。如果两个任务在同一秒并行,但其实两个任务可能在同一秒的不同部分执行。例如第一任务在第一个十分之一秒运行第二个任务则在第二个十分之一秒运行,之后又是第一个任务.... 交替运行。但由于时间较短给人的感觉还是两个任务在同时进行。时间的间隔可以放大,也可以缩小。无论任务间是不是同时进行,我们都可以认为他们是并行的。
二,并行程序设计的挑战
软件开发本身就是一种挑战。在开发过程中是否使用多核编程,如何选择多核编程都是对开发人员的一种挑战。
1,挑战 1 - 软件分解,任务分解
多线程或多处理的需要多数情况是在分解任务的过程中发现的。分解就是对于一个问题或解决方案划分成基本部分的过程。
在分解的过程中找出正确的多线程模型,对于整个软件非常重要。
一个简单的实例:
问题:我们要在规定的时间内粉刷房子内所有的房间。
问题分解
1, 油漆的颜色
2, 刷油漆的工具
3, 刷房间的先后顺序
4, 刷油漆的时间
解决方案
1, 颜色选择与家具搭配的颜色
2, 工具使用自动刷漆机, 一台或多台
3, 可以选择同时刷多个房间,也可以选择顺序一个一个刷
4, 工作时间 9:00 - 18:00
从