锁定一个ArrayList本身实例list可以保证线程安全吗?和锁定list.SyncRoot 效果上有什么不同?

解决方案 »

  1.   

    >> 锁定一个ArrayList本身实例list可以保证线程安全吗?可以。>> 和锁定list.SyncRoot 效果上有什么不同?没什么不同。实际上很多Collection的SyncRoot返回的就是this(Hashtable,Stack, SortedList等等)。用SyncRoot可能程序可读性更好一些。另外,.NET 2.0新增的容器里面已经没有SyncRoot乐。(比如List<>)。
      

  2.   

    我也这么认为,但是,在我的代码中,我使用lock语句无论lock自身还是SyncRoot,或者this和其他临时实例对象,都出现了冲突,后来,我使用了Synchronized方法返回的同步对象,冲突大大减少,但是还是会出现线程冲突,最后没有办法我使用try{}catch{}把它要绕过去了,但是,这只是个临时办法。。不知道你有没有遇到过这种情况。
      

  3.   

    没人说lock或者Sychronized可以保证没有现成冲突,这些只是工具,结果要看你的程序线程同步处理是不是正确。简单的调试办法是先扩大lock的范围,测试确定没有问题,在逐步缩小。