Crate rc_event_queue[][src]

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.