同步的lock()方法怎么用?主要是LOCK(XX),这个XX是怎么定义的?? 学习 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 XX是一个引用对象,不可以是值类型,必须是引用类型。当你lock(XX){...}进去后就将XX对象标记为锁定,大括号执行完才恢复,而别的地方也想占用这个锁的时候(也是lock(XX))就必须等这个花括号执行完。如果别的地方已经在等了,那么这边的花括号一执行完,别的地方可以锁定,进执行进去了。 msdn:xx指定要锁定的对象。expression 必须是引用类型。 通常,如果要保护实例变量,则 expression 为 this;如果要保护 static 变量(或者如果临界区出现在给定类的静态方法中),则 expression 为 typeOf (class)lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入一个锁定代码,则它将在释放该对象前一直等待(块)。 创建一个对象时会额外创建两个东西,一个是方法表指针,一个是同步锁索引(自己随便取的)。方法表指针指向一个类型的方法表,可以获得其运行时类型。同步锁索引顾名思义是为同步机制设定的。当你lock一个对象时会在一个同步锁缓存区(也忘记真正名字了)分配一个锁,然后将对象的锁索引指向那个分配的锁的索引....你可以lock(typeof(MyType))来创建更大的锁(有人说是全局锁),其实这和一般的锁没什么不同,你看成lock(MyType.GetType())应该就好理解些了,他也只是锁一个对象,只是这个对象是静态的(一个类型的GetType()方法永远会返回同一个对象)。 应该一次读取服务器数据还是分多次读取? 小弟最近想搞C#,求资料 在C#中怎么把一个Excel保存成为一个Html文件? 请介绍本网络编程基础书籍 ? 智能客户端 到底是什么 有谁给我一个例子吗 smtp Compact Framework的程序当前路径如何获得? 求教:Application.EnableVisualStyles() 报错 ZedGraph制作实时曲线,占用CPU问题! 如何卸载visual studio 我在MDI窗体上加了一个panel控件,但show出来的窗体都在panel的下面,不知道怎么显示在上面? Attribute 在C#中如何真正使用?
当你lock(XX){...}进去后就将XX对象标记为锁定,大括号执行完才恢复,而别的地方也想占用这个锁的时候(也是lock(XX))就必须等这个花括号执行完。如果别的地方已经在等了,那么这边的花括号一执行完,别的地方可以锁定,进执行进去了。
xx指定要锁定的对象。expression 必须是引用类型。
通常,如果要保护实例变量,则 expression 为 this;如果要保护 static 变量(或者如果临界区出现在给定类的静态方法中),则 expression 为 typeOf (class)
lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入一个锁定代码,则它将在释放该对象前一直等待(块)。
方法表指针指向一个类型的方法表,可以获得其运行时类型。
同步锁索引顾名思义是为同步机制设定的。当你lock一个对象时会在一个同步锁缓存区(也忘记真正名字了)分配一个锁,然后将对象的锁索引指向那个分配的锁的索引....
你可以lock(typeof(MyType))来创建更大的锁(有人说是全局锁),其实这和一般的锁没什么不同,你看成lock(MyType.GetType())应该就好理解些了,他也只是锁一个对象,只是这个对象是静态的(一个类型的GetType()方法永远会返回同一个对象)。