1.1 并行还是并发
并发是问题域中的概念--程序需要被设计成能够处理多个同时(或者几乎同时)发生的事件;而并行则是方法域中的概念--通过将问题中的多个部分并行执行,来加速解决问题。
- 并发是同一时间应对(dealing with)多件事的能力。
- 并行是同一时间做(doing)多件事的能力。
1.2 并行架构
- 位级(bit-level)并行
- 指令级(instruction-level)并行
- 数据级(data)并行
- 任务级(task-level)并行
1.3 并发:不只是多核
使用并发的目的,不仅仅是为了让程序并行运行从而发挥多核的优势。若正确使用并发,程序还将获得以下优点:及时响应,高效,容错,简单。
1.4 七个模型
- 线程与锁
- 函数式编程
- clojure之道-分离标识与状态
- actor
- 通信顺序进程
- 数据级并行
- lambda架构