并发队列删除项目从同步或重新排序中删除
本文关键字:排序 删除 新排序 删除项目 队列 同步 并发 | 更新日期: 2023-09-27 18:36:18
我需要能够从队列中重新排序或删除项目,这些项目将由一个任务添加到并被监视,项目被另一个任务删除。 该程序目前使用数据流库,我想知道是否有人有任何经验,能否就如何实现这一目标提供见解或示例?
除了你正在使用的库的细节之外,你正在处理的任务并不合理,因为重新排序是一项全局任务,只有在所有元素都可用时才能完成。
有对数组和列表进行排序的并发方式,例如 mergeSort 实际上可以通过并发模型进行扩展,但是当排序开始时,元素需要全部可用。
另一方面,当元素可用于排序过程时,您可以通过对不断增长的数据结构进行精确插入来保持部分列表的排序。
因此,我仅将队列用作缓冲区,这是生产者任务将元素异步发送到排序任务的一种方式。然后,排序任务保留另一个结构,很可能是双链表或其他一些强连接结构,这些结构在插入时具有良好的性能,并使用它来在队列中可用时立即将新元素添加到正确的位置(将它们从队列中取出)。