考虑以下代码:
static void AddItem()
{
lock (_list)
_list.Add ("Item " + _list.Count); //Lock 1
string[] items;
lock (_list)
items = _list.ToArray(); //Lock 2
foreach (string s in items)
Console.WriteLine (s);
}
如果线程 A 获得了锁 2,而线程 B 试图获得锁 1,那么 B 是否会获得锁?考虑到两个锁使用相同的锁定对象。