3
我具有由各个线程访问的Queue<T>
字段。 Enequeue()
从多个线程称为每秒多次,同时有一个单线程执行Dequeue()
和Count
操作。System.Collections.Queue <T>,线程,锁定和同步
我还一直在想很多关于这个到现在为止,因为我打它的“安全”和之前与该队列的任何操作静态物体上使用lock
。虽然目前没有任何性能问题,但如果它们是多余的,我想摆脱这些锁。我的问题是:
- 因为我永远不会遍历队列,在这种情况下真的需要锁吗?我的意思是,当程序碰巧一个线程出现并且第二个线程同时在处出错元素时程序会崩溃吗?
- 应该我也许用
Queue.Synchronized()
得到的包装,如果是这样:会影响性能比原来的队列?
感谢,'ConcurrentQueue'出现为我工作的所有工作,没有沉重的锁。 –
avance70
2011-04-26 12:53:54
@ avance70 - 除非你已经进行了配置,否则我不会自动假设这里的锁是“沉重的”...... – 2011-04-26 13:09:57
我认为我的锁很好地实现,只影响到几个必要的行。但是,正如你所建议的'ConcurrentQueue'我在某处读到它使用'System.Threading.Interlocked'操作,它比'lock' –
avance70
2011-04-26 13:21:49