一个关于lock的问题

tujunyan 2007-03-07 07:48:23
public class EntryIdCache
{
private static object _entriesLock = new object();
internal void Ensure(DataManager data)
{
lock(_entriesLock)
{
bool bLoaded = Load(data);
if (!bLoaded || _booting || ChangeNumber != data.CurrentEntryChangeCount)
{
_booting = false;
Build(data);
Save(data);
}
}
}
}
请问这个地方lock这个类里面的一个private static object 是什么意思 为什么不使用的lock他自己
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
whq1982 2007-03-07
  • 打赏
  • 举报
回复
静态成员是多个实例共有的一个,所以当一个实例Lock这个静态成员,别的实例就不能取得控制权
dreammaster 2007-03-07
  • 打赏
  • 举报
回复
lock语句主要是为了实现多线程数据同步,如果lock对象自己,而对象是public的,所以可能存在不受控的代码访问该实例,从而造成死锁.

私有静态成员应该是所有实例内共享变量,这断代码就可以保证所有同时创建的EntryIdCache,同时只有一个线程执行Ensure方法.
tujunyan 2007-03-07
  • 打赏
  • 举报
回复
谢谢大家帮助以下

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧