Maybe gcc can do something clever with that, or at least warn us if we don't save the return value somewhere.
Add an atomic queue. The queue can be used from multiple threads simultaneously and without taking any locks or doing any blocking operations. This makes it highly scalable for things like the bus, bufferpools and object recycling.