參考文章:
Object thisLock=new Object(); lock(thisLock) { //Criticalcodesection. }
一般而言,請避免鎖定public型別或程式碼無法控制的執行個體。
有三種常見的建構,分別為 lock(this)、lock(typeof(MyType))和lock("myLock"),違反這項方針:
·
lock(this)在可公開存取執行個體的情況下,會是問題所在。
·
lock(typeof(MyType))在可公開存取MyType的情況下,會是問題所在。
·
lock("myLock")會是問題所在,因為使用相同字串的處理序中若有任何其他程式碼,將會共用相同的鎖定。
最佳作法是定義要鎖定的private物件,或者定義privatestatic物件變數保護所有執行個體通用的資料。
PS. 上述三種情況,有可能會造成Deadlock。
沒有留言:
張貼留言