我的問題聽起來像許多人在這裏,但它有一種我沒有發現的味道。c中的鎖碼部分#
我想了解以下邏輯
一般目的
public class GenericClass
{
public static void DoSomething(Object lockObj)
{
lock(lockObj)
{
// do something here
}
}
}
A類
internal class A
{
private static _aLock = new Object();
public void Do_A_Thing()
{
GenericClass.DoSomething(_aLock);
}
}
B類
internal class B
{
private static _bLock = new Object();
public void Do_B_Thing()
{
GenericClass.DoSomething(_bLock);
}
}
我只是希望確認是否我的解釋是正確的:
如果類「A」的多個線程將嘗試同時訪問「genericClass」方法「DoSomething」中的代碼,則此方法將被鎖定到除「A」類的所有實例之外的所有實例。但是類「B」的單個實例將隨時可以繼續執行。如果類「B」也有多個實例執行,它們不會干擾類「A」鎖。
這是正確的,基於你在上面看到什麼?
是的......雖然結構似乎有點可怕 – Yaur
你真的有';'在'lock(lockObj);'?你不應該。這就像'if(someCondition); {// do stuff}':你只是將'lock'或'if'應用於由';'指示的空語句,而不是由'{}'指示的代碼塊。 –
一般而言,您希望您的鎖定對象是私有的,以便您知道其他人無法鎖定它們。傳遞他們需要對調用者有很多信任(和知識)。 –