On Wed, Sep 24, 2014 at 7:21 AM, William Light <wrl@illest.net> wrote:
Hey everybody,

I've got this audio app I'm writing which uses message passing to
communicate between threads (similar to the actor model). A message
channel consists of a ring-buffer for the actual message storage, and
then an eventfd so that a thread can block on its channel (or,
importantly, several).

At the moment, when the audio thread (the JACK callback) needs to send a
message over a channel to another thread, it follows the common codepath
of appending the message to the channel's ring-buffer and then
write()ing to the eventfd. I suspect this is not real-time safe, but is
it something I should lose sleep over?

we're still missing measurements on the performance of semaphores, fifo's and eventfd's when used for this purpose on modern linux. JACK itself uses FIFOs (pipes) on Linux because 10+ years ago they were the fastest and most reliable. nobody knows for sure right whether that is still true.