lock关键字将语句块标记为临界区,确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。如果其他线程尝试进入锁定的代码,则它将一直等待,直到该对象被释放。

一般而言,避免锁定public型或无法控制的执行个体。有三种常见的违反这个方针的代码: 

lock(this)在可公开存取执行个体的情况下,会出现问题 

lock(typeof(MyType))在可公开存取MyType的情况下,会出现问题 

lock("myLock")会出现问题 

最佳的用法是定义要锁定的private或private static对象保护所有执行个体通用的资料。 

例如: 

private static object objLock=new object(); 

lock(objLock) 

//代码块 

相关文章:

  • 2022-12-23
  • 2022-01-23
  • 2022-12-23
  • 2021-08-02
  • 2021-08-14
猜你喜欢
  • 2022-12-23
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2022-12-23
  • 2021-07-12
相关资源
相似解决方案