【发布时间】:2012-03-19 09:13:04
【问题描述】:
我似乎找不到支持简单 Remove() 函数的 .NET 线程安全/并发收集,在该函数中我可以删除特定项目或传入谓词以基于该函数删除项目。我试过了:
BlockingCollection<T>
ConcurrentQueue<T>
ConcurrentStack<T>
ConcurrentBag<T>
有谁知道支持这种行为的集合,还是我必须创建自己的集合?
我希望能够从线程安全队列中获取下一个项目而不删除它,然后如果满足某个条件,则继续删除它。
【问题讨论】:
-
“抓取下一个项目......然后......继续删除它” - 同时其他线程可以做什么?
-
只有2个线程,一个将项目添加到队列中,另一个将项目取出并触发一个事件。如果事件返回成功,则该项目必须从队列中移除。
标签: c# collections concurrency thread-safety concurrent-programming