我们都掉进了一个大坑——高并发程序设计

葛一鸣, 浙江工业大学硕士国家认证系统分析师获得 Oracle OCP 认证。长期从事 Java 软件开发,对 Java 程序设计,JVM 有比较深的研究。对设计模式、人工智能、神经网络、数据挖掘等技术有浓厚兴趣,著有《实战Java虚拟机——JVM故障诊断与性能优化》纸书和《自己动手写神经网路》电子书,力求用 Java 改变世界。


并行计算只有在图像处理和服务端编程 2 个领域可以使用,并且它在这 2 个领域确实有着大量广泛的使用。但是在其他任何地方,并行计算毫无建树!  

与串行程序不同,并行程序的设计和实现异常复杂,不仅仅体现在程序的功能分离上,多线程间的协调性、乱序性都会成为程序正确执行的障碍。只要你稍不留神,就会失之毫厘,谬以千里!

Linus Torvalds说“忘掉那该死的并行吧!”。

摩尔定律的失效

说得直白点,就是每 18 个月到 24 个月,我们的计算机性能就能翻一番。摩尔定律并不是一种自然法则或者物理定律,它只是基于人为观测数据后,对未来的预测。按照这种速度,用不了多久,我们的计算能力就能超越“上帝”了!我们的制造工艺已经到了纳米了。1 纳米是 10-9 米,也就是 10 亿分之一米。

纳米是什么概念?一个水分子的直径是0.4个纳米。

我们的工艺技术的限制,除非有重大的技术突破。4GHz 的芯片就已经接近了理论极限。虽然英特尔已经制作出4GHz的芯片了。

我们都掉进了一个大坑——高并发程序设计_第1张图片

2005 年开始,我们已经不再追求单核的计算速度,而着迷于研究如何将多个独立的计算单元整合到单独的 CPU 中,也就是我们所说的多核 CPU。摩尔定律在另外一个侧面又生效了。根据这个定律,我们可以预测,每过18 到 24 个月,CPU 的核心数就会翻一番。

顶级计算机科学家唐纳德·尔文·克努斯(Donald Ervin Knuth),如此评价这种情况:我看来,这种现象(并发)或多或少是由于硬件设计者已经无计可施了导致的,他们将摩尔定律失效的责任推脱给软件开发者。

硬件工程师就破天荒地想出了将多个 CPU

内核塞进一个 CPU 里的奇妙想法。由此,并行计算就被非常自然地推广开来,而随之而来的问

题也层出不穷,程序员的黑暗时期也随之到来。简化的硬件设计方案必然带来软件设计的复杂

性。换句话说,软件工程师正在为硬件工程师无法完成的工作负责。





你可能感兴趣的:(并行)