我正在寻找优先级队列或堆数据结构的.NET实现
优先级队列是比简单排序提供更多灵活性的数据结构,因为它们允许新元素以任意间隔进入系统.将新作业插入优先级队列比在每次到达时重新排序所有内容更具成本效益.
基本优先级队列支持三种主要操作:
- 插入(Q,X).给定具有密钥k的项x,将其插入优先级队列Q.
- 查找-最小(Q).返回指向其键值小于优先级队列Q中任何其他键的项的指针.
- 删除 - 最小(Q).从密钥最小的优先级队列Q中删除该项
除非我在错误的地方寻找,否则框架中没有一个.有人知道一个好的,或者我应该自己动手?
我有许多线程从服务器列表中检索数据。每 5 分钟从服务器解析器下载一次服务器列表。我用于处理数据的线程应该仅使用响应时间最短的服务器。每个服务器的响应时间可能因请求而异。因此,在更新服务器列表之间的时间范围内,我应该验证每个服务器的响应时间。
我最初的方法是创建两个额外的线程:第一个线程更新服务器列表,第二个线程验证每个服务器的响应时间并根据服务器的响应时间对服务器列表进行排序。
我尝试使用BlockingCollection<T>它来连接生产者和消费者,但在我的任务中,我有两个并发消费者,并且也BlockingCollection<T>没有插入项目来创建服务器优先列表的本机能力。
ConcurrentStack<T>或者ConcurrentQueue<T>也不能按原样使用,因为它们像 as 一样是非阻塞的,BlockingCollection<T>并且它们需要额外的机制来阻塞需要队列中的项目的线程。
请帮我解决这个任务。