并发兴起的背景以及并发并行概念及两者的区别
2018-02-05 本文已影响27人
每天学点编程
请关注我的微信公众号
个人微信公众号
技术交流群 (仅作技术交流):642646237
请关注我的头条号:
背景
“多核危机”导致了并发编程的复兴——利用多核,发掘并行执行的潜力
什么是并发
并发程序含有多个逻辑上的独立执行块,它们可以独立地并行执行,也可以串行执行。
并发 VS 并行
并发是问题域中的概念——程序需要被设计成能够处理多个同时(或者几乎同时)发生的事件;
并行则是方法域中的概念——通过将问题中的多个部分并行执行,来加速解决问题。
并发是同一时间应对(dealing with)多件事情的能力;
并行是同一时间动手做(doing)多件事情的能力。
辨别何为并发
班级设计了自己的贺卡并要批量制作,让每位学生制作五枚贺卡。这种方法是并行,而(从整体看)不是并发,因为这个过程整体来说只有一个任务。
并发 VS 并行
并发和并行经常被混淆的原因之一是,传统的“线程与锁”模型并没有显式支持并行。如果要用线程与锁模型为多核进行开发,唯一的选择就是写一个并发的程序,并行地运行在多核上。
并发程序的执行通常是不确定的,它会随着事件时序的改变而给出不同的结果。对于真正的并发程序,不确定性是其与生俱来且伴随始终的属性。与之相反,并行程序可能是确定的。用支持并行的编程语言可以写出并行程序,而不引入不确定性。