并发队列删除同步或重新排序的项目输出

时间:2015-01-05 11:31:34

标签: c# concurrency

我需要能够重新排序或删除队列中的项目,这些项目将由一个任务添加项目并进行监视,并将项目从另一个任务中删除。该程序正在使用Dataflow库,我想知道是否有人有任何经验,可以请提供有关如何实现这一目标的见解或示例?

1 个答案:

答案 0 :(得分:0)

除了您正在使用的库的细节之外,您正在处理的任务不健全,因为重新排序是一项全局任务,只有在所有元素都可用时才能完成。

有并发方式对数组和列表进行排序,例如mergeSort实际上可以使用并发模型进行扩展,但是在排序开始时元素必须全部可用。

另一方面,您可以通过在不断增长的数据结构上进行精确插入来保留部分列表,因为这些元素可用于订购流程。

因此,我只将队列用作缓冲区,这是生产者任务将元素异步发送到排序任务的一种方式。然后,排序任务保留另一个结构,很可能是双链表或一些其他强连接结构,它们在插入时提供良好的性能,并且一旦它们在队列中可用就用它将新元素添加到正确的位置(采取他们不在队列中。)