【发布时间】:2013-08-15 13:55:20
【问题描述】:
我想要一个支持阻塞线程安全Take操作的并发集合,而实际获取的项目是满足条件的项目。
类似:
private TheBlockingCollection<MyClass> _myCollection;
MyClass myItem = _myCollection.TakeItemWhere(item => item.Type.equals(something));
最终目标是获取集合中当前存在的具有最高属性值的项目。例如- 最大
有这样的内置集合吗?
如果不是,什么是更好的选择?
【问题讨论】:
-
您是否希望它遍历所有可用的项目,首先取与谓词匹配的那个?还是阻塞直到第一项与谓词匹配?
-
我非常非常怀疑您是否会在现有集合中找到满足该要求的任何内容。听起来您可能希望拥有 多个 集合(每种类型一个)并按优先级对每个集合进行排序。
-
我会那样做的。但在我的情况下,该属性是一个 int,代表优先级。所以不可能根据值分离到多个集合...
-
听起来你实际上并不需要这个;听起来你可以让底层集合成为一个优先级队列,为项目提供最高优先级,而无需在获取项目时指定条件。
标签: c# thread-safety concurrent-collections