Java原子整数和C#Interlocked.Increment方法之间的区别

时间:2011-05-27 09:10:52

标签: c# java multithreading thread-safety

我只是想知道,在线程环境中如何增加Java中的静态变量和C#之间有区别吗?

在Java中你使用atomic int:s来进行这个操作,在C#中你使用Interlocked.Incement(ref yourVar)

我这并不是指您编写的代码,而是它实际上如何锁定内存并实际增加。

2 个答案:

答案 0 :(得分:9)

互锁操作不会锁定内存,而是根据操作向指令发出LOCK前缀。这导致处理器断言总线锁定,因此只执行一次指令。 您可以进一步查看following article

答案 1 :(得分:2)

在Java的情况下 - “它的工作原理”取决于执行平台的指令集。我正在阅读(今天早些时候等待无休止的操作系统升级完成)x86 AtomicXxx类是使用比较和交换(CAS)指令实现的。