c# - 支持移除项的线程安全集合

标签 c# collections concurrency thread-safety concurrent-programming

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

BlockingCollection<T>
ConcurrentQueue<T>
ConcurrentStack<T>
ConcurrentBag<T>

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

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

最佳答案

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

关于c# - 支持移除项的线程安全集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506662/

相关文章:

c# - 报错不能在静态类中声明实例成员

c# - 在 C# 中使用 Linq to XML 从 Xelement List 迭代时不返回最后一个节点

c# - 在字典中存储委托(delegate)

c# - 从符号和两个数字计算答案时如何使用 linq

java - 清除 HashMap 的所有值,除了两个键/值对

c++ - MS 并发运行时有哪些限制?

asynchronous - 使用 F# 和 Task<T> 的循环并发算法

java - 检查列表列表是否包含列表中的任何子列表匹配元素

java - 归还藏品

go - 无限for循环内的goroutine。这是一个好习惯吗?