假设我有以下功能:
public void AddItems(List<Item> items)
{
lock (_locker)
{
foreach (var item in items)
{
Buffer.Enqueue(item);
}
}
}
可以从许多不同的线程调用此函数。
lock关键字确保一个线程不进入代码的关键部分,而另一个线程处于临界区。如果另一个线程试图输入锁定的代码,它将等待,阻止,直到该对象被释放。 MSDN
虽然锁确保收到的项不会相互混合,但我想知道锁释放后等待线程的调用顺序是什么。