Crate rc_event_queue

Source
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 EventReaders live. In order to completely drop EventQueue - drop all associated EventReaders.

§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.