摘要:
多核处理,并行设计已经成为了计算机发展不可阻挡的趋势之一。越来越多的技术人员开始关注多线程程序设计。但是选择什么样的环境来介入多线程程序设计往往是一个比较头疼的问题。应该说,目前的许多环境并没有为多线程建立良好的模型,例如C和C++。为此,人们试图在这种环境中通过添加库的方式为其加入多线程的功能。但是,这显然是不合适的,实际上许多的时候,程序库根本不能解决所有的问题,我们真正需要的是一种将多线程纳入其规范体系之内的环境。 阅读全文
摘要:
上一篇随笔“"Loads are not reorderd with other loads" is a FACT!! 续:不要指望 volatile”中已经提到了。.NET的内存模型在volatile load上的实现是错误的。这在今天终于是半个官方的结论了。有关这个讨论的结论可以参考“A bit more formalism as to why CLR's MM is broken on x86/x64 ”。关于内存模型(MM)的问题枯燥,缩略词跟别的领域有过之无不及,为了便于说明趁着这个机会罗列一下。 阅读全文
摘要:
上一篇随笔中提到了volatile,实际上由于上一篇中提到的问题,volatile已经越来越远离其应有的含义了。在说这个问题之前,我们又要提.NET的内存模型问题(以下简称MM),我不指望在这里长篇大论的说其内存模型是如何的。简单的说就是以下的几句话... 阅读全文
摘要:
对于多线程编程的难度,再充分的心里准备也许都是不够的。前一段时间一直在整理一些有关多线程编程的内容(一个对多线程算法库编写过程中的经验积累)。而在前天,一篇来自于Microsoft 的PFX的Joe的博文惊现:"Loads cannot pass other loads" is a ~myth ,着实让人惊出了一身冷汗。 阅读全文