A concurrent heap is simply a conventional heap structure with some flags associated with each node to support concurrent deletions and insertions. Insertion proceeds from root down to the target node along its unique “insertion path.” The insert item keeps sinking down until the heap property is satisfied. Deletion naturally flows top-to-bottom. After deletion, a substitute item is brought in at the root from the last node, and then this substitute is sunk to satisfy the heap property. This substitute needed from the last node may not be immediately available because it could be en route to the last node while being inserted. In that case, the delete process sets a ‘ wanted ’ flag at the last node. The insert process keeps checking the status of its target node and directly places its insert items at the root as the substitute item, once its item becomes ‘ wanted. ’