lock(){ }的功能

lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。

  线程处理(C# 编程指南) 这节讨论了线程处理。

  lock 调用块开始位置的 Enter 和块结束位置的 Exit。

  通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。

      常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:

  如果实例可以被公共访问,将出现 lock (this) 问题。   

     如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。   

     由于进程中使用同一字符串的任何其他代码将共享同一个锁,所以出现 lock(“myLock”) 问题。

posted @ 2012-04-19 15:24  王宏磊@中国  阅读(220)  评论(0编辑  收藏  举报