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