圖片驗證碼:如何防止死鎖,當你需要鎖定多個對象
你有2個數組,你需要在同一時刻,他們都鎖定(以任何理由 - 你只需要保持鎖定他們兩人,因爲他們已經在某種程度上取決於對方) - 你可以窩鎖
lock (array1)
{
lock (array2)
{
... do your code
}
}
,但是這可能會導致死鎖的情況下,有人在你的代碼的其他部分會做
lock (array2)
{
lock (array1)
{
... do your code
}
}
和數組1被鎖定 - 執行上下文切換 - 然後數組2被第二個線程鎖定。
有沒有辦法自動鎖定它們?如
lock_array(array1, array2)
{
....
}
我知道我可能只是創造一些額外的「鎖定對象」,並鎖定這不是兩個數組無處不在我的代碼,但是這似乎並不正確,我...
創建一個額外的鎖對象*是*正確的。 –
使用將鎖定這兩個項目的單個鎖定對象是要走的路。 – user871289