最新 | 最热门 | 最高评价

+0  剖析为什么在多核多线程程序中要慎用volatile关键字?

Tag: 并行编程 | Pthreads | volatile | 原子操作 | 多核 | 多线程Bug | 多线程内存模型 | 多线程编程 | 线程同步 | 线程安全
Guancheng (G.C.) 发于 2010年12月04日 16:46 | 点击: 3435 | 展开摘要
这篇文章详细剖析了为什么在多核时代进行多线程编程时需要慎用volatile关键字。

主要内容有:

1. C/C++中的volatile关键字

2. Visual Studio对C/C++中volatile关键字的扩展

3. Java/.NET中的volatile关键字

4. Memory Model(内存模型)

5. Volatile使用建议

1. C/C++中的volatile关键字

1.1 传统用途

C/C++作为系统级语言,它们与硬件的联系是很紧密的。

查看全文: http://www.udpwork.com/item/3673.html

+0  多线程程序常见Bug剖析(下)

Tag: 并行编程 | 多线程Bug | 多线程编程 | 线程同步
Guancheng (G.C.) 发于 2010年11月23日 08:27 | 点击: 2632 | 展开摘要
上一篇文章我们专门针对违反原子性(Atomicity Violation)的多线程程序Bug做了剖析,现在我们再来看看另一种常见的多线程程序Bug:违反执行顺序(Ordering Violation)。

简单来说,多线程程序各个线程之间交错执行的顺序的不确定性(Non-deterministic)是造成违反执行顺序Bug的根源[注1]。正是因为这个原因,程序员在编写多线程程序时就不能假设程序会按照你设想的某个顺序去执行,而是应该充分考虑到各种可能的顺序组合,从而采取正确的同

查看全文: http://www.udpwork.com/item/3522.html

+0  多线程程序常见Bug剖析(上)

Tag: 并行编程 | 原子操作 | 多核 | 多线程Bug | 死锁 | 线程同步
Guancheng (G.C.) 发于 2010年11月13日 22:59 | 点击: 2390 | 展开摘要
编写多线程程序的第一准则是先保证正确性,再考虑优化性能。本文重点分析多线程编程中除死锁之外的另两种常见Bug:违反原子性(Atomicity Violation)和违反执行顺序(Ordering Violation)。现在已经有很多检测多线程Bug的工具,但是这两种Bug还没有工具能完美地帮你检测出来,所以到目前为止最好的办法还是程序员自己有意识的避免这两种Bug。本文的目的就是帮助程序员了解这两种Bug的常见形式和常见解决办法。

1. 多线程程序执行模型

在剖析Bug之

查看全文: http://www.udpwork.com/item/3414.html
|<<<1>>>| 一共1页, 3条记录