关于Lock语句的简单问题:下面这几种有什么区别?
Lock(this)Lock(new object())
private object obj;
Lock(obj)
private object obj=new object();
Lock(obj)
Lock(this)Lock(new object())
private object obj;
Lock(obj)
private object obj=new object();
Lock(obj)
解决方案 »
- 怎么把c#源代码里面的皮肤去掉?
- C# Access Ado.net
- oracle与.net开发的一个问题
- 调用dll
- WinForm中文本框,怎么样不让用Ctrl+V进行操作呢?
- 100分 求 Updater Application Block 问题
- 点击删除按钮时,提示违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。
- 如何做一个控件,编译成组件,并在别的页面调用?
- SOCKET中Read阻塞后怎么超时?
- 请问谁有包含全国说有县市名称的数据库,给我一份,500分回报!
- winform 页面显示问题
- 在后台代码中,当在DropDownList里为"已领取",那么有两个文本框不可编辑?
Lock(this) // 小心使用 (别人可以解开你上的锁)
Lock(new object()) // 没有用
private object obj
Lock(obj) // 对象可能还没有初始化
private object obj=new object()
Lock(obj) // 比较好
当"this"是公开的并有多个引用时,可能会有问题,因为有可能不受控制的代码也把这个对象锁了。
比如多个线程等待释放它时,会造成死锁Lock(new object()) 等于没锁private object obj;
Lock(obj) 没实例化?private object obj=new object();
Lock(obj) 一般都用这种。
-------------------为什么这句等于没锁?
所有“人”回答:当然没有啦,人家刚new出来,你是第一个访问它的。