Tag: spinwait

为什么在.NET内部的Hashtable中有一个Thread.Sleep(1)?

最近我正在读.NET Hashtable的实现,遇到了一些我不明白的代码。 部分代码是: int num3 = 0; int num4; do { num4 = this.version; bucket = bucketArray[index]; if (++num3 % 8 == 0) Thread.Sleep(1); } while (this.isWriterInProgress || num4 != this.version); 整个代码在System.Collections.Hashtable (mscorlib版本= 4.0.0.0)的public virtual object this[object key]的public virtual object this[object key] 。 问题是: 在那里有Thread.Sleep(1)的原因是什么?