简介
在谈并行前,头脑中总会浮出多线程、多进程、线程/进程同步、线程/进程通信等词语。
那为什么需要同步、通信,它们之间的作用是怎样的呢?
通信,稍微好理解,就是多线程/进程之间相互通话,比如我打电话呼叫你,我说什么,你答什么,或者我说,你只听。它着重于数据的传递
同步,其实是相对于共享内存而言,比如,我们在同一时刻同一个地方修改了共享对象的数据,这样就会导致数据的篡改,得不到理想中的结果,这时就需要同步。它的基础是基于共享同一个对象而言。
现在软件世界中,存在着很多模式和框架,比如设计模式,MVC框架,那么并行编程是否也存在某些模式呢?
常用的四种并行模式
共享内存模式(The shared memory model)
多线程模式(The multithread model)
分布式内存/消息传递模式(The distributed memory/message passing model)
数据并行模式(The data parallel model)
现在我们再来看看线程/进程同步,它们是不是基于共享内存模式;线程/进程通信对应着消息传递模式。
说明一点:数据并行,是将数据分割成多组相互独立的数据处理。
设计并发程序的四个阶段(PCAM设计方法学):
划分(Partitioning):分解成小的任务,开拓并发性
通讯(Communication):确定