In LinuxCNC userspace realtime model we use a fixed-size boost::lockfree::queue, allowing any of our N realtime threads to queue a message (in this case literally a debug/logging message string) which will be read out by a separate non-realtime thread. (multiple producer, single consumer) Because the boost::lockfree::queue is finite, there is the possibility that any particular message may be lost due to a full queue. However, in practice this is not the case as long as RT produces messages at a pace that non-RT can keep up with, and in any case RT performance can't be affected by lost messages. Jeff