By Roger Dannenberg
back to liblfds home
Real-time computer music systems are generally budget-limited: they're either for consumers or for researchers, and neither can afford custom hardware or device drivers. Therefore, they run on off-the-shelf operating systems and use consumer hardware and device drivers. Generally, scheduling is based on static priorities, which allows hard real-time performance required for low-latency audio processing, but priority-based scheduling runs the risk of priority inversion, which is not handled in these operating systems. Therefore, almost every real-time music application is based on lock-free single-reader, single-writer queues for synchronization.
Now, this small community is faced with multi-core processors and new memory systems -- we know that there are processor and shared memory designs that will break the typical queue implementations we use, but we do not know which systems are problematic, and it's not at all obvious how to proceed.
The ideal solution would be a portable library (in C) that implements at least single-reader, single-writer lock-free queues that run correctly on Win32, Linux, and OS X. It would be nice to know what other lock-free, real-time data structures can be implemented efficiently. These are the problems and goals of the discussion group.