C# lock语句

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

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

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

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

lock("myLock")会出现问题 

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

例如: 

private static object objLock=new object(); 

lock(objLock) 

//代码块 

posted @ 2013-05-22 14:47  飛雲若雪  阅读(848)  评论(0编辑  收藏  举报