Failure scenarios I can think of:
- Messages aren't protected during write. If a low-priority publisher is writing to the oldest message in the topic group, and a high-priority publisher needs to drop that message in order to publish, the topic group memory could become corrupted.
- A low-priority listener is publishing something on its own topic group, and the topic group is full. In this case, the low-priority listener might try to take its own mutex.
These sorts of issues can be prevented by ensuring that topics never run out of memory. See also #5