2018-01-26

## 并发的驱动力

并发编程复兴的主要驱动力来自于“多核危机”。

## 并发与并行

并发程序含有多个逻辑上的独立执行块,它们可以独立地并行执行,也可以串行执行。


并发是同一时间应对(dealing with)多件事情的能力;

并行是同一时间动手做(doing)多件事情的能力。





并发程序的执行通常是不确定的,它会随着事件时序的改变而给出不同的结果。对于真正的并发程序,不确定性是其与生俱来且伴随始终的属性。与之相反,并行程序可能是确定。


传统的“线程与锁”模型并没有显式支持并行。

##单核CPU级别的并行

单核在位级和指令级两个层次上都能够并行地使用这些晶体管资源。

##  单核CPU级别的并行 位级(bit-level)并行

对于两个32位数的加法,8位计算机必须进行多次8位计算,而32位计算机可以一步完成,即并行地处理32位数的4字节。

## 单核CPU级别的并行 指令级(instruction-level)并行

现代CPU的并行度很高,尽管处理器内部的并行度很高,但是经过精心设计,从外部看上去所有处理都像是串行的。


## 单核CPU级别的并行 数据级(data)并行


数据级并行(也称为“单指令多数据”,SIMD)架构,可以并行地在大量数据上施加同一操作。



##多核CPU级别的并行 共享内存的多处理器

每个处理器都能访问整个内存,处理器之间的通信主要通过内存进行

2018-01-26_第1张图片
图片发自App


##多核CPU级别的并行 分布式内存的多处理器

对于分布式内存的多处理器系统,每个处理器都有自己的内存,处理器之间的通信主要通过网络进行

2018-01-26_第2张图片
图片发自App

通过内存通信比通过网络通信更简单更快速,所以用共享内存编程往往更容易。

你可能感兴趣的:(2018-01-26)