Tag: 联锁

Interlocked.CompareExchange真的比简单的锁更快吗?

我遇到了.NET 3.5的ConcurrentDictionary实现(我很抱歉,我现在可以找到链接),它使用这种方法进行锁定: var current = Thread.CurrentThread.ManagedThreadId; while (Interlocked.CompareExchange(ref owner, current, 0) != current) { } // PROCESS SOMETHING HERE if (current != Interlocked.Exchange(ref owner, 0)) throw new UnauthorizedAccessException(“Thread had access to cache even though it shouldn’t have.”); 而不是传统的lock : lock(lockObject) { // PROCESS SOMETHING HERE } 问题是:有没有真正的理由这样做? 它更快还是有一些隐藏的好处? PS:我知道在一些最新版本的.NET中有一个ConcurrentDictionary但我不能用于遗留项目。 编辑 : 在我的具体情况下,我所做的只是以一种线程安全的方式操作内部Dictionary类。 例: public bool […]