最新 | 最热门 | 最高评价

+0  从DCL的对象安全发布谈起

Tag: Concurrency & Asynchronism | Recommended | DCL | final | happens-before | JSR | volatile | 线程安全
四火 发于 2013年12月28日 22:05 | 点击: 2378 | 展开摘要
对于DCL(Double Check Lock)情况下的对象安全发布,一直理解得不足够清楚;在通过和同事,以及和互联网上一些朋友的讨论之后,我觉得已经把问题搞清楚了。我把我对这个问题的理解简要记录在这里。

现在有代码A:

class T {
private static volatile T instance;
public M m; // 这里没有final修饰

public static T getInstance() {
if (null == inst

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

+0  《程序员的自我修养》中关于加锁不能保证线程安全的一个错误

Tag: 并行编程 | memory visibility | Pthreads | 原子操作 | 多线程编程 | 线程安全
Guancheng (G.C.) 发于 2011年04月09日 08:49 | 点击: 2731 | 展开摘要
在《程序员的自我修养 — 链接装载与库》一书第28页“过度优化”这一节中,作者提到了编译器优化可能造成多线程bug的情况(我手中的是09年6月第二次印刷那版)。原文如下:

线程安全是一个非常烫手的山芋,因为即使合理的使用了锁,也不一定能保证线程安全,这是源于落后的编译器技术已经无法满足日益增长的并发需求。很多看似无错的代码在优化和并发前又产生了麻烦。最简单的例子,让我们看看如下代码:

x = 0;

Thread 1 Thread 2

lock

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

+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  多线程队列的算法优化

Tag: 并行编程 | 算法学习 | Algorithm | queue | 多线程编程 | 性能分析 | 死锁 | 线程安全
Guancheng (G.C.) 发于 2010年10月25日 00:52 | 点击: 3481 | 展开摘要
多线程队列(Concurrent Queue)的使用场合非常多,高性能服务器中的消息队列,并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作:添加(enqueue)和删除(dequeue)节点。在一个(或多个)线程在对一个队列进行enqueue操作的同时可能会有一个(或多个)线程对这个队列进行dequeue操作。因为enqueue和dequeue都是对同一个队列里的节点进行操作,为了保证线程安全,一般在实现中都会在队列的结构体中加入一个队列

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

+0  多线程程序中操作的原子性

Tag: 并行编程 | 原子操作 | 多核 | 多线程编程 | 线程安全
Guancheng (G.C.) 发于 2010年04月15日 23:49 | 点击: 2642 | 展开摘要
0. 背景

原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题:1. 多线程程序中对变量的读写操作是否是原子的?2. 多线程程序中对Bit field(位域)的读写操作是否是线程安全的?3. 程序员该如何使用原子操作?

1. 多线程环境下对变量的读写操作是否是原子的?

我们先从一道很热门的百度笔试题讲起。很多人讲不清楚其背后的原理,下面我们就来对它进行一下剖析(

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