支持删除项目的线程安全集合

Sea*_*man 3 c# collections concurrency thread-safety concurrent-programming

我似乎无法找到支持简单的Remove()函数的.NET线程安全/并发集合,我可以在其中删除特定项目或传入谓词以根据该项目删除项目.我试过了:

BlockingCollection<T>
ConcurrentQueue<T>
ConcurrentStack<T>
ConcurrentBag<T>
Run Code Online (Sandbox Code Playgroud)

有没有人知道支持这种行为的集合,还是我必须自己创建?

我希望能够从线程安全队列中获取下一个项目而不删除它,稍后如果满足某个条件,则继续删除它.

Kir*_*ril 8

你试过ConcurrentDictionary吗?它有一个TryRemove方法,因此如果您将该键视为谓词,那么您将删除正确的项目.


Tho*_*que 5

你确定ConcurrentQueue<T>不适合你的需求?它有一个TryPeek方法和一个TryDequeue方法,它完全符合您在最后一段中描述的内容。