假设多个线程定期执行下面的DoWork()方法.假设在某个时刻,两个线程几乎同时开始执行此方法,因此两个本地时间戳对象中的一个比另一个更大.
ICollection collection = // ... public void DoWork() { DateTime timestamp = DateTime.Now; lock(collection.SyncRoot) { // critical section } }
如果线程A的特征在于时间戳等于t1,而线程B的特征在于时间戳t2等于t1 1 tick,则线程A将首先需要访问临界区.
.NET如何通过多个线程管理对关键部分的访问?它是否将访问请求放入队列中,以便它们按时间顺序排列?换句话说,是否根据线程访问请求的顺序保证对关键部分的访问?