我只是想知道,在线程环境中如何增加Java中的静态变量和C#之间有区别吗?
在Java中你使用atomic int:s来进行这个操作,在C#中你使用Interlocked.Incement(ref yourVar)
我这并不是指您编写的代码,而是它实际上如何锁定内存并实际增加。
答案 0 :(得分:9)
互锁操作不会锁定内存,而是根据操作向指令发出LOCK前缀。这导致处理器断言总线锁定,因此只执行一次指令。 您可以进一步查看following article
答案 1 :(得分:2)
在Java的情况下 - “它的工作原理”取决于执行平台的指令集。我正在阅读(今天早些时候等待无休止的操作系统升级完成)x86 AtomicXxx类是使用比较和交换(CAS)指令实现的。