我认为,有时候需要多个线程并行去完成一些操作,同步是为了确保,线程之间访问共享数据不出现错误,但是为什么我使用lock后,就成了同步的了。就是说,A线程完成了任务,A结束了然后B线程开始,那么我需要并行,改怎么办呢?不用lock锁定就不行吗?有什么办法,或者有什么建议,大家帮我解答下!谢谢..
解决方案 »
- dataset数据过滤后能不能恢复,如果没有没有其他方法呢?
- 直接绑定数据库里的数据 不用控件
- 请教VS2008 C# 写ASP.net 在IIS上运行里报错 Service Unavailable 要怎样处理?
- panel1里的Form里的TextBox问题
- C# 请问有没有控件可以显示文字类型的超链接?
- datagrid问题
- DataAdapter是否会记住特定的DataTable的UpdateCommand?--在线,立结!
- 初学者进阶:从过程化编程转到面向对象编程
- 怎么做到两个窗口同时运行呢?
- 各位前辈,小弟有两个小问题请教!
- DataTable 与 Treeview 数据绑定问题。帮补充一段代码 (100分)
- 求用C#开发海康威视DS4000HC视频监控代码
lock(引用对象){...}
或
Monitor.Enter(引用对象);
...
Monitor.Exit();这些锁技术是解决资源争用问题和避免所谓数据脏读等方面问题的;线程同步是线程间的顺序问题的,使用:
事件,Interlocked等来解决;
我做了个DEMO,方法中有个循环,执行加了lock后2个线程并行的在执行,就是:A,B,A,B这个顺序。而我替换了方法后,顺序就成了:A先把方法
里面事情全做完了,然后B线程才开始....难道是我方法内部执行时间太长了?