我认为,有时候需要多个线程并行去完成一些操作,同步是为了确保,线程之间访问共享数据不出现错误,但是为什么我使用lock后,就成了同步的了。就是说,A线程完成了任务,A结束了然后B线程开始,那么我需要并行,改怎么办呢?不用lock锁定就不行吗?有什么办法,或者有什么建议,大家帮我解答下!谢谢..

解决方案 »

  1.   

    锁技术
    lock(引用对象){...}

    Monitor.Enter(引用对象);
    ...
    Monitor.Exit();这些锁技术是解决资源争用问题和避免所谓数据脏读等方面问题的;线程同步是线程间的顺序问题的,使用:
    事件,Interlocked等来解决;
      

  2.   

    是不是lock的范围太大了.lock内的代码是同步的,只有一个线程可以执行。
      

  3.   


    我做了个DEMO,方法中有个循环,执行加了lock后2个线程并行的在执行,就是:A,B,A,B这个顺序。而我替换了方法后,顺序就成了:A先把方法
    里面事情全做完了,然后B线程才开始....难道是我方法内部执行时间太长了?