最近我在阅读 .NET Hashtable 的实现时,遇到了一段我不理解的代码。其中的一部分如下:int num3 = 0; int num4; do { num4 = this.version; bucket = bucketArray[index]; if (++num3...
我查看了并发集合,但它们似乎在内部使用普通的锁定。在.NET框架中有没有使用这种锁定结构的好例子? 我最初看了ConcurrentDictionary。我发现它使用普通锁定,但BlockingCollection类在其内部方法中使用SpinWait。
以下是基于Interlocked.CompareExchange的互锁方法的实现。 在重新迭代之前,使用SpinWait自旋是否明智?public static bool AddIfLessThan(ref int location, int value, int comparison) {...