Expand description
Concurrent FIFO event queue / message queue. Multi consumer. Each consumer receive all messages. Lock-free reading. Write under lock (for mpmc version). Write lock does not block read.
Linked list of chunks (C++ std::deque -like). Each chunk have “read counter”.
When “read counter” reach readers count - it is safe to drop chunk. Chunk considered read, when
Reader reach its end. See doc/principle-of-operation.md
.
EventQueue
live, until EventReader
s live.
In order to completely drop EventQueue
- drop all associated EventReader
s.
§Features
double_buffering
: Reuse biggest freed chunk.
Modules§
- Multi-producer multi-consumer.
- Single-producer multi-consumer.
Enums§
- This way you can control when chunk’s memory deallocation happens. In addition, some operations may cause deallocations as well.
Traits§
- This should be rust GAT iterator. But it does not exists yet.