We present the Mindicator, a set implementation customized for shared memory runtime systems. The Mindicator is optimized for constant-time querying of its minimum element, while ensuring scalability as the number of threads adding and removing elements from the set grows. We introduce a lock-free Mindicator and prove its correctness. We also introduce lock-based and quiescently consistent Mindicators, and show that all provide good scalability on both the Intel x86 and Sun SPARC platforms. The strong performance of Mindicators make them suitable for use in high-performance run-time systems, such as garbage collectors, transactional memory, and operating system kernels.
Yujie Liu, Michael F. Spear