簡體   English   中英

鎖定非靜態方法

[英]Lock on non-static method

我可以非靜態方式使用lock對象嗎? 另一方面,此代碼是線程安全的嗎?

static readonly object _object = new object();  
public void Get()  
{  
  lock (_object)  
  {  
    ...  
  }  
}

用非靜態方法鎖定靜態對象就可以了。 靜態對象僅表示該類型的所有實例只有一個鎖。

如果使用類級別字段,則每個類型實例都有一個鎖。

選擇哪一個取決於您要保護哪些資源防止並發訪問。 例如,如果您具有靜態資源(例如集合),那么保護該資源的鎖也必須是靜態的。

您可以改用this鎖定:

lock (this)
{

}

鎖定當前對象實例本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM