[英]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.