发布时间:2013-07-06 10:28:31
来源:http://www.parallellabs.com/2011/10/02/lock-in-parallel-programming/ 在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。 1. 用锁来防止数据竞跑 在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新时产生数据竞跑(Data Race)。所谓数据竞跑,是指当两个(或多个)线程同时对某个共享变量进行操作,且这些操作中至少有一个是写操作时所造成的程序错误。例1中......【阅读全文】
发布时间:2013-07-06 09:58:21
转自 http://www.parallellabs.com/2010/04/15/atomic-operation-in-multithreaded-application/0. 背景
原子操作就
是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头。本文主要讨论了三
个问题:1. 多线程程序中对变量的读写操作是否是原子的?2. 多线程程序中对Bit field(位域)的读写操作是否是线程安全的?3.
程序员该如何使用原子操作?
1. 多线程环境下对变量的读写操作是否是原子的?
我们先从一道很热门的百度笔......【阅读全文】