polling to check if a message is waiting in the shared memory?
It offers support for IPC message queues (and also shared memory and
semaphores if needed).
No need for polling. You can request a message (of a certain type of
needed), and your ruby process just holds until a message of that type
is available on the queue.
I’ve used it for > 1 year in a setup where a C++ process dispatches
messages that are handled by several parallel ruby processes.
Very light-weight and must have handled millions of messages without any
problem by now. (won’t work on Windows though)