RT经常听人说,什么什么是线程安全的,比如说HashTable,就是线程安全的,意思是不是,当多个线程读写HashTable的数据时,不需要对此加锁啊???问题可能有点弱智,见笑见笑。

解决方案 »

  1.   

    HashTable不用加lock关键字,Dictionary需要显式使用lock关键字
      

  2.   

    就是说对 HashTable 的多线程访问,不会造成冲突,你自己要做到线程安全,就要涉及到互斥,加锁,同步等概念
      

  3.   

    目前我了解的就是,线程安全 就是多个线程之间访问,防止冲突, 比如一个线程要改变lable的值,另外一个也要改变他大的值,如果同时改变,就冲突了。
    另外一个加锁也是为了防止这种现象,比如同时操作一个变量
    问这个问题不算是菜鸟哦,楼主谦虚啦
      

  4.   

    就像一楼说的 对HashTable的访问不用加锁了??
      

  5.   

    你可以查MSDN
    线程安全
    --------------------------------------------------------------------------------Hashtable 是线程安全的,可由多个读取器线程和一个写入线程使用。 多线程使用时,如果只有一个线程执行写入(更新)操作,则它是线程安全的,从而允许进行无锁定的读取(若编写器序列化为 Hashtable)。 若要支持多个编写器,如果没有任何线程在读取 Hashtable 对象,则对 Hashtable 的所有操作都必须通过 Synchronized 方法返回的包装完成。 从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。 即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。 若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。 
      

  6.   

    同一时刻,一个写,N个读。。而且读不会影响另一个读。。读完光标飘走的就不行,比如用read next之类的。。煮面中。。瞎说的。。