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