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