本帖最后由 niss 于 2012-02-03 10:50:35 编辑

解决方案 »

  1.   

    顶一下,
    按道理,由于_ht写的会锁住hashtable的syncroot,那么如果外面再lock的话,就会死锁了,可是测试的结果并没有这样,太奇怪了
      

  2.   

    应该没问题。
    而且像lz使用了lock的话,就没必要再用Synchronized了
    为什么说“_ht写的会锁住hashtable的syncroot”呢?虽然不知道具体的实现,据MSDN上所说,Synchronized仅支持多线程写入时的线程安全,应该不会锁SyncRoot
      

  3.   

    嗯,原来lock是在线程级别上的
      

  4.   


    什么意思?什么叫做“锁住hashtable的syncroot”?如果你认为lock的意思就是锁住什么对象,那么就是一种误解了。lock的意思是以对象为锁(的key),而不是锁住它。比如说对于一个列表对象x,如果你的程序lock(x),而人家的程序却是lock了x的某个属性(或者元素),那么两个程序根本不是以同一个对象为加锁的key,那么它们互相之间根本不互锁。