Previous work has explored lock-free operating systems implementations, general techniques for wait-free concurrent data structures, and hardware and operating system support for non-blocking synchronization.