使用什么对象类型/实例进行同步
本文关键字:实例 同步 类型 什么 对象 | 更新日期: 2023-09-27 18:10:01
我看到过获取锁时使用的不同对象
-
静态私有对象
public class MyClass { private static object syncBlock = new object(); private void MyMethod() { lock (syncBlock) { } }
}
-
类级私有对象
public class MyClass { private object syncBlock = new object(); private void MyMethod() { lock (syncBlock) { } } }
-
使用类型本身
public class MyClass { private void MyMethod() { lock (typeof (MyClass)) { } } }
使用这个: public class MyClass { private void MyMethod() { lock (this) { } } }
有没有人能详细说明一下这些方法的优缺点,以及在给定的场景中,是否应该优先使用这些方法?
不要用lock(this)
也不要用lock(typeof(MyClass))
对于static
和instance
,这取决于你适合什么。如果您使用static private object
,那么类的所有实例将共享锁。如果您使用的private object
不是静态的,那么每个实例将拥有自己的锁。所以没有利弊,这取决于你需要什么