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

dzhpxtsq  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(59)

我只是想知道,在线程环境中,Java和C#中增加静态变量的方式有什么不同吗?
在Java中,你使用原子int:s来执行这个操作,在C#中,你使用Interlocked.Incement(ref yourVar)
我的意思不是你写的代码,而是它实际上是如何锁定内存和实际增量的。

byqmnocz

byqmnocz1#

互锁操作不会锁定内存,它会根据操作的不同向指令发出一个前缀。这会导致处理器Assert总线锁定,因此只有指令执行一次。您可以进一步查看following article
由于链接不再工作,这里是存档版本
https://web.archive.org/web/20140325112655/http://lists.canonical.org/pipermail/kragen-tol/1999-August/000457.html

x6h2sr28

x6h2sr282#

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

相关问题