作用:
lock 语句获取给定对象的互斥 lock,执行语句块,然后释放 lock。
持有 lock 时,持有 lock 的线程可以再次获取并释放 lock。 阻止任何其他线程获取 lock 并等待释放 lock。
//一个对象
object x = new object();
lock (x)
{
// Your code...
}
准则:
当同步对共享资源的线程访问时,请锁定专用对象实例或另一个不太可能被代码无关部分用作 lock 对象的实例。 避免对不同的共享资源使用相同的 lock 对象实例,因为这可能导致死锁或锁争用。
注意避免将以下对象用作 lock 对象:
- this(调用方可能将其用作 lock)
- Type 实例(可以通过 typeof 运算符或反射获取)
- 字符串实例,包括字符串文本,(这些可能是暂存的)