我一直在阅读约瑟夫·阿巴哈里(Joseph Albahari)关于线程的书:
http://www.albahari.com/threading/
在第二部分中,我发现了这个例子:
http://www.albahari.com/threading/part2.aspx#_When_to_Lock
这里是上述例子:
class ThreadUnsafe
{
static int _x;
static void Increment() { _x++; }
static void Assign() { _x = 123; }
}
线程安全版本:
class ThreadSafe
{
static readonly object _locker = new object();
static int _x;
static void Increment() { lock (_locker) _x++; }
static void Assign() { lock (_locker) _x = 123; }
}
我不明白为什么Assign方法不是线程安全的。在32位和64位架构上,整数分配不应该是原子操作吗?