Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
Computer Architecture and Parallel Processing