Crate mpmc_ringbuf

source ·
Expand description

mpmc-ringbuf focuses on offering a easy and efficient way to share data between different instance. And we offer the different mode Fixed,Dynamic to satisfy the demand.

simple example

single thread

 let mut msg_queue: MsgQueue<u8> = MsgQueue::new();
 let mut writer1 = msg_queue.add_producer();
 let mut read1 = msg_queue.add_consumer();
 writer1.write(vec![10; 100]);
 assert_eq!(read1.size(), 100);
 let mut read2 = msg_queue.add_consumer();
 assert_eq!(read2.size(), 0);
 assert_eq!(msg_queue.get_consumer_count(), 2);
 writer1.write(vec![0; 100]);
 assert_eq!(read1.size(), 200);
 assert_eq!(read2.size(), 100);
 read2.read(50);
 assert_eq!(read1.size(), 200);
 assert_eq!(read2.size(), 50);

Modules

The implementation of mpmc-ringbuf.