解决方案 »
- Web Service Session身份验证问题
- 加急:如何实现在IE浏览器页面中中打开的webbrowser页面后,当关闭webbrowser时自动关闭IE浏览器的的页面。
- listbox控件的选取值如何传递参数给水晶报表?另外还有4贴问的是同样的问题!!!
- C# onKeyDown的问题?
- 50分请教库函数
- 在asp.net是实现的Page Controller和MVC两种模式有什么区别那
- 请教大家,如何打印Panel。Panel中有Label,textBox.
- 急求XDE for vs.net 2003 的教程
- 关于.net平台和OpenGL的调用关系?
- C# windows form 开发什么类型的项目比较有优势?
- c#读取带样式(包括图片和table以及文本样式)的word文档
- WPF,绑定到集合是双向还是单向的?
已经加了一个lobject 的对象做为锁。
但这样加,好像是一锁就把类里边的所有的Queue和DataTable都锁起来了,而其实,某些时候并不需要把所有的资源都锁起来,只是锁定某个特定的资源。这也是我头疼的问题。
1、其实线程1与线程2中几乎没有共享的代码块,线程1与线程2中加载的方法也几乎是完全不同的
2、线程1与线程2在更新共享的表之前,有很多预备工作,这些是不相互干扰的。只有在对表进行处理时才会需要锁住共享的表,而且此时只是需要锁定共享的表。但是如果用lock,是不是这个时候的两个队列也被锁定了?
或者说,当我想锁定某一个Queue的时候,是不是此时另外一个Queue和共享的这个表也不能操作了?
lock括号中的内容只是个标识,与要锁定的类成员无关。
一般使用一个空object作为标识。
如:object locker = new object();此处,当我要在某线程单独处理positionT时,只需要在线程方法中涉及positionT操作的地方加上lock(locker)
当不同的线程遇到locker标识时,便会先判断locker是否被别的线程锁定,如果有,则等待。
在没有lock(locker)的地方,线程正常运行。
如果我要对几个资源分别上锁,其实可以定义多个空object锁分别对相关的操作进行互斥。