1 回答

TA貢獻1828條經(jīng)驗 獲得超13個贊
“等待該線程完成的任何線程”是指使用靜態(tài)線程的初始化鎖等待的任何線程,而不是使用任何可能的同步機制等待的線程。靜態(tài)初始化機制無法知道其他線程正在等待另一個線程上使用一些完全不同的機制。
引用的部分是指以下示例不會死鎖的事實:
public class A
{
static A()
{
Thread.Sleep(TimeSpan.FromSeconds(1));
B.DoNothing();
}
public static void DoNothing() { }
}
public class B
{
static B()
{
Thread.Sleep(TimeSpan.FromSeconds(1));
A.DoNothing();
}
public static void DoNothing() { }
}
private static void Main()
{
Task.Run(() => B.DoNothing());
A.DoNothing();
}
這個例子沒有死鎖,因為一個線程正在等待另一個線程釋放靜態(tài)初始化器鎖,所以當該線程最終要求原始線程擁有的靜態(tài)初始化器鎖時,quoted 子句啟動并且它只是跳過鎖.
- 1 回答
- 0 關注
- 151 瀏覽
添加回答
舉報