繁体   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