Efficient Wait-Free Implementation of a Concurrent Priority Queue
We present an efficient wait-free implementation of a concurrent priorityqueue in the asynchronous shared memory computational model. In this model each process runs at different speed and might be subject to arbitrarily long delays. The new implementation is based on the heap data structure in which the Insert and DeleteMin operations are long — they take more than one atomic instruction to complete and they leave the heap inconsistent until completed. The previous implementation requires copying the entire data-structure by each processes every time it tries to perform an operation. Consequently its space and time complexity are linear in the number of processes — p and in the size of the data-structure — n. In the new implementation all processes operate directly on the shared copy of the data structure. Its time complexity is O(p log n) and its space complexity is O(n). Moreover, the new implementation is effectively parallel, meaning that all processes can operate effectively on the object, such that the throughput increases as the number of processes increases.