比如Queue<int> _queue = new Queue<int>();
然后在一个线程Thread1中我进行_queue.Enqueue()操作
在另外一个线程Thread2中我进行 _queue.Dequeue()操作
是否需要进行线程同步呢?
谢谢大家~~~~

解决方案 »

  1.   


    呵呵,的确如此。对于Queque来说,就算没锁,dequeue 出来最差也是个null
      

  2.   

    差点被我妄断为类型安全,但不保证线程安全,呵呵
    MSDN:
    此类型的公共静态(在 Visual Basic 中为 Shared)成员是线程安全的。 但不能保证任何实例成员是线程安全的。 只要不修改该集合,Queue<T> 就可以同时支持多个阅读器。 即便如此,从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。 若要确保枚举过程中的线程安全,可以在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。 http://msdn.microsoft.com/zh-cn/library/7977ey2c.aspx顶1楼,锁锁更健康
      

  3.   

    MSDN上说这些都不是线程安全的。
      

  4.   

      Queue mySyncdQ = Queue.Synchronized( myQ );