Fir*_*gon 17 c# multithreading locking thread-safety
锁定类的类型与类本身的锁定有什么区别?
例如:
private readonly object xmpp = new object();
lock (xmpp)
{
...
}
Run Code Online (Sandbox Code Playgroud)
VS
lock (typeof(Xmpp))
{
...
}
Run Code Online (Sandbox Code Playgroud)
seh*_*ehe 19
lock(x) 为每个类型的实例同步一个不同的锁
lock(typeof(X)) 为该类型的所有实例同步锁定
始终锁定私有锁对象:
public class X
{
private readonly Object _lock = new Object();
// ...
lock (_lock)
{
}
Run Code Online (Sandbox Code Playgroud)
如果必须同步对类静态成员的访问,请使用相同的模式:
public class X
{
private readonly static Object s_lock = new Object();
Run Code Online (Sandbox Code Playgroud)