Browsed by
作者: Ian.sino

典型的IT男,目前在一个小小的星球的一个大的不要命的跨国企业的一个小小的办公桌前寻找着自己大大的梦想。因为工作的关系英日皆通,喜欢看动画。除此之外可以参照互动百科的IT男词条。
读书笔记:对线程模型的批评

读书笔记:对线程模型的批评

——感谢Ian.Sian投递本文——

多线程模型是主流的并发编程模型。在过去几十年来,多线程模型一直是开发并发程序的有力工具。然而,它的历史并非总那么美好。1997年,NASA 的“火星探路者”号在执行任务的途中遭遇了严重的时序异常(参见 “What really happend on Mars“,注目 follow-up 中的现身说法),无法发回探测数据。如果不是 NASA 远程刷新了程序,它的结局就只能是报废在火星上。这一切都是由程序中潜藏的一个优先级反转 bug 造成的。更早的例子还有80年代的一系列 Therac-25 型医用粒子加速器事故。在这些加速器释放出的过量辐射照射之下,数位病人死亡。事后调查显示,至少有一次发生事故的原因,是加速器的控制软件中,存在一个只能由特定操作序列引发的竞争条件 bug。你也许认为这些只是陈年往事,但是直到现在,即便是世界500强公司们高价买来的信息系统,也同样避免不了这些问题。这导致许多程序员认为线程是个潘多拉魔盒,对它采取能躲就躲的态度。然而近来计算机的发展使得躲猫猫的空间越来越小:随便从市场上淘一个CPU,它里面也有不止一个核心。未来的程序员只会有越来越多的机会接触到并发编程,而无法再独善其身了。

加州大学伯克利分校教授,爱德华 A. 李在2006年做了一次题为《线程的麻烦 (The Problem with Threads)》的学术报告。在报告中他提到:看上去,多线程只是对核心语言的小小扩展,甚至可以以第三方库的形式存在。但实质上,多线程程序和原有的核心语言编写的程序已经完全不同了。其原因在于,由于多线程程序可能以任意的次序交错执行,程序再也无法像顺序执行时那样产生确定的结果。多线程程序容易编写(因为写的是顺序程序),但是难分析,难调试,更容易出错。

在我的想法中,产生问题的根源,是多线程模型作为对并发问题的一个抽象,是很不完善的。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (25 人打了分,平均分: 3.92 )
Loading...