我正在编写一个无锁C库,我将实现一个优先级队列。但是,我的库的目标不是数据结构的完整性,我只是想实现一些典型的,然后编写一个mirco-benchmark来表明无锁的在一些特殊情况下比基于锁的那些表现更好。 。所以我想知道是否有一些典型的应用程序优先级队列起着重要的作用。 (开源项目是最好的。)然后我可以将它们作为基准。
答案 0 :(得分:2)
要列出的一些内容:
1. Dijkstra’s Shortest Path Algorithm
2. Prim’s algorithm
3. Huffman codes for Data compression.
4. Heap sort
5. Load balancing on servers.
在以下方面指出了各种应用:
https://www.cdn.geeksforgeeks.org/applications-priority-queue/
此外,wiki本身有一个广泛的应用程序和参数列表,您可以根据这些列表比较您的比较(请参阅运行时间摘要部分): https://en.wikipedia.org/wiki/Priority_queue
答案 1 :(得分:1)
Priority queues与队列的不同之处在于 不会对FIFO 原则起作用。
...优先级队列的 元素按照它们的顺序排序 自然排序,或由比较器在队列构建时提供 时间...
其中一个真实示例是Priority Scheduling算法,其中为每个作业分配优先级,优先级最高的作业首先进行调度
答案 2 :(得分:1)
我在现实生活中看到的优先队列的最常见用途是:
1)优先工作队列:当线程准备好进行更多工作时,它从优先级队列中选择优先级最高的可用任务。这是一个非常好的无锁队列应用程序。
2)找到最近的餐馆/酒店/浴室/给定位置的任何东西。从几乎任何空间数据结构中检索这些数据的算法都使用优先级队列。