Tag: priority queue

在C#中排队

虽然这个问题听起来像是重复的,但我搜索了很多但却找不到合适的解决方案。 我有以下课程 public enum ChangeType { Add, Modify, Delete } public enum ChangedObjectType { Project, Customer, Border, Photo } public struct ChangeInfo { public ChangeType typeofChange { get; private set; } public ChangedObjectType objectType { get; private set; } public string objectID { get; private set; } public ChangeInfo(ChangeType changeType, ChangedObjectType changeObj, string objectId):this() { […]

C#中的简单优先级队列 – 什么比使用自定义Sorter的List更好:IComparer?

我想实现一个优先级队列,它将注入我的对象 – 关于一个字段的Nodes – f 。 我已经用自定义比较器编写了List,但这需要我: enqueue – 在每次插入后对List进行排序 dequeue – 删除最后一个(而不是第一个性能),如此 myList.RemoveAt(myList.Count – 1); 我的列表应该总是根据某个字段排序(这里我需要它按f排序)。 我还需要能够使用列表中的最小值添加和dequeue列对象。 有人能告诉我这是最好的方法吗? 编辑 dasblinkenlight有一个非常好的答案,但我已经意识到我应该能够在这个容器中存储重复项。

处理包装任务的有限并发级别任务调度程序(具有任务优先级)

我很难找到一个任务调度程序,我可以在其上安排优先级任务,但也可以处理“包装”任务。 它类似于Task.Run尝试解决的问题,但您无法为Task.Run指定任务计划Task.Run 。 我一直在使用Parallel Extensions Extras Samples中的QueuedTaskScheduler来解决任务优先级要求(也是本文的建议)。 这是我的例子: class Program { private static QueuedTaskScheduler queueScheduler = new QueuedTaskScheduler(targetScheduler: TaskScheduler.Default, maxConcurrencyLevel: 1); private static TaskScheduler ts_priority1; private static TaskScheduler ts_priority2; static void Main(string[] args) { ts_priority1 = queueScheduler.ActivateNewQueue(1); ts_priority2 = queueScheduler.ActivateNewQueue(2); QueueValue(1, ts_priority2); QueueValue(2, ts_priority2); QueueValue(3, ts_priority2); QueueValue(4, ts_priority1); QueueValue(5, ts_priority1); QueueValue(6, ts_priority1); Console.ReadLine(); } private […]