我剛剛瞭解到互鎖類,它應該比簡單的鎖定更快。現在,這一切都很好,但我對實施感到好奇。Interlocked如何工作,爲什麼它比鎖更快?
據我所知,確保對變量的操作是自動完成的唯一方法是確保只有一個線程可以隨時訪問該變量。這是鎖定。
我使用反射來獲得互鎖的來源,但似乎它使用外部方法來完成其所有工作:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
我已經運行一些測試,並互鎖實際上是兩次與簡單地鎖定對象並增加它一樣快。
他們是怎麼做到的?
CPU支持.... – spender
你是什麼意思? –