【发布时间】:2013-09-05 15:27:01
【问题描述】:
我刚刚了解到互锁类,它应该比简单的锁定更快。现在,这一切都很好,但我对实施感到好奇。
据我所知,确保对变量的操作以原子方式完成的唯一方法是确保在任何时候只有一个线程可以访问该变量。哪个是锁定的。
我使用反射器来获取Interlocked的来源,但它似乎使用外部方法完成所有工作:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
我已经运行了一些测试,实际上 Interlocked 的速度是简单地锁定对象并增加它的两倍。
他们做得怎么样?
【问题讨论】:
-
@ArsenZahray,CPU 为您的代码购买了病房和灰尘。它还堆叠营地。
标签: c# multithreading locking interlocked