Max*_*ich 19 c# multithreading interlocked
Interlocked.Increment 似乎是在多线程代码中需要执行的最标准/最简单的操作之一.
我假设该方法的功能是一种排序模式,任何具有线程经验的人都能够复制.
所以基本上我想知道的是,如果某人能够提供Interlocked.Increment内部实际执行的方法的完全重复(解释它是如何工作的)?(我已经找到了实际方法的来源但却无法找到它)
我假设它是一个实现细节,但是查看它的一种方法是检查JIT编译的代码.请考虑以下示例.
private static int Value = 42;
public static void Foo() {
Interlocked.Increment(ref Value);
}
Run Code Online (Sandbox Code Playgroud)
在x86上,它生成以下内容
lock inc dword <LOCATION>
Run Code Online (Sandbox Code Playgroud)
所述锁改性剂锁定总线,以防止多个CPU从更新相同的数据的位置.
在x64上它生成
lock xadd dword ptr <LOCATION>,eax
Run Code Online (Sandbox Code Playgroud)