Priority queues with parallel access are an attractive data structure for applications like prioritized online scheduling, discrete event simulation, or greedy algorithms. However, a classical priority queue constitutes a severe bottleneck in this context, leading to very small throughput. Hence, there has been significant interest in concurrent priority queues with relaxed semantics. We investigate the complementary quality criteria rank error (how close are deleted elements to the global minimum) and delay (for each element x, how many elements with lower priority are deleted before x). In this paper, we introduce MultiQueues as a natural approach to relaxed priority queues based on multiple sequential priority queues. Their naturally high theoretical scalability is further enhanced by using three orthogonal ways of batching operations on the sequential queues. Experiments indicate that MultiQueues present a very good performance-quality tradeoff and considerably outperform competing approaches in at least one of these aspects. We employ a seemingly paradoxical technique of "wait-free locking" that might be of more general interest to convert sequential data structures to relaxed concurrent data structures.
翻译:具有平行访问权限的优先排队对于诸如优先在线排程、离散事件模拟或贪婪算法等应用程序来说是一个有吸引力的数据结构。 但是, 古典优先排队在这方面构成一个严重的瓶颈, 导致了非常小的排量。 因此, 对同时的优先排队有着浓厚的兴趣, 并且使用宽松的语义。 我们调查了补充性的质量标准排队错误( 如何将元素的距离缩短到全球最低值) 和延迟( 对于每个元素 x, 有多少优先度较低的元素在 x 之前被删除 ) 。 在本文中, 我们引入多队列作为基于多个顺序优先排队的放松优先排队的自然方法。 它们自然高的理论缩放性因在顺序列队列上使用三种或几等式的分批作业方式而得到进一步的进一步加强。 实验显示, 多队列至少在这些方面有一个非常好的性能质量折中, 大大超出竞争性的方法。 我们采用了一种似乎矛盾的“ 闲置的锁定” 技术, 这可能更普遍地将顺序数据结构转换为放松同时的数据结构。