为什么从队列前面插入(deque)

时间:2015-11-19 12:17:03

标签: data-structures queue

有没有理由让人们想要在队列前面插入一些东西?我正在撰写关于双端队列的报告,这让我感到烦恼。

我假设在需要时可能会在前面插入更重要的东西,但优先级队列将更具相关性。

2 个答案:

答案 0 :(得分:1)

可以使用双端队列的一个示例是窃取作业调度算法。该算法实现了多个处理器的任务调度。为每个处理器维护一个单独的deque,其中包含要执行的线程。为了执行下一个线程,处理器从deque中获取第一个元素(使用“remove first element”deque操作)。如果当前线程分叉,则将其放回到双端队列的前面(“在前面插入元素”)并执行新线程。当其中一个处理器完成自己的线程执行(即它的deque为空)时,它可以从另一个处理器“窃取”一个线程:它从另一个处理器的deque中获取最后一个元素(“删除最后一个元素”)并执行它。窃取作业调度算法由英特尔的线程构建模块(TBB)库用于并行编程。

答案 1 :(得分:0)

请注意,优先级队列本身与双端队列不同,PQ中的元素根据其优先级进行处理,而在双端队列中,只能删除并插入队列的前端或后端。我可以快速想到一个deque的可能应用是一个“撤消”功能,使您可以回退到以前的状态。