在多线程应用程序中,我必须实现ConcurrentDictionary<string,Queue<MyClass>>;
队列需要是ConcurrentQueue
吗?有必要吗?我将在同一个线程中将所有元素出列,所以我认为不是。我对吗?
编辑:我没有提到我在一个不同的线程中排队我排队的地方所以我认为正确的结构将是
Dictionary<string,ConcurrentQueue<MyClass>>
。字典键仅在启动时编辑
答案 0 :(得分:2)
如果您只改变传递给并发字典的updateValueFactory
调用的AddOrUpdate()
委托中的队列,那么您保证只有一个线程访问Queue
对象一段时间,所以是的,在这种情况下你不需要使用ConcurrentQueue
例如,以下代码允许在许多不同的线程中随时调用Enqueue()
和Dequeue()
,并且会阻止{{1}中的任何单个Queue
对象来自一次被多个线程访问:
ConcurrentDictionary