我正在编写一个无锁C库,我将实现一个优先级队列。但是,我的库的目标不是数据结构的完整性,我只想实现一些典型的结构,然后编写一个 mirco 基准测试来证明无锁的在某些特殊情况下比基于锁的更好。所以我想知道是否有一些典型的应用程序,优先级队列起着重要作用。(开源项目是最好的。然后我可以将它们用作基准。
列出一些: 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
优先级队列与队列的不同之处在于它们不按照 FIFO 原则进行操作。
一个。优先级队列的元素根据其排序 自然排序,或通过队列构建时提供的比较器 时间。。。
真实的例子是优先级调度算法,其中每个作业都被分配一个优先级,具有最高优先级的作业首先被调度
我在现实生活中看到的优先级队列最常见的用途是:
1( 优先工作队列:当线程准备好进行更多工作时,它会从优先级队列中选取优先级最高的可用任务。 这是无锁队列的绝佳应用程序。
2(找到离给定位置最近的餐厅/酒店/浴室/任何东西。 从几乎任何空间数据结构中检索这些内容的算法都使用优先级队列。
当你构建一个产品时,你会把事情分解成更小的块(故事(。然后为每个分配优先级。然后拿起它,处理它并关闭。
JIRA故事是优先级队列的相关示例。