List<T>是线程安全的(在非枚举等极端情况下)。
那是否意味着多线程,读,写,删,操作同时进行的时候,List不用加锁??

解决方案 »

  1.   

    要使用锁,对于应用类型多线程操作都要加锁,像值类型就可以不用加锁,如
    volatile int itemIndex = 0;
    volatile bool logining = false;
      

  2.   

    MSDN
    此类型的公共静态(在 Visual Basic 中为 Shared)成员是线程安全的。 但不能保证任何实例成员是线程安全的。只要不修改该集合,List<T> 就可以同时支持多个阅读器。 从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 在枚举与一个或多个写访问竞争的罕见情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。