Crate magnetic [−] [src]
Magnetic contains a set of high-performance queues useful for developing low-latency applications. All queues are FIFO unless otherwise specified.
Examples
use std::thread::spawn; use magnetic::spsc::spsc_queue; use magnetic::buffer::dynamic::DynamicBuffer; use magnetic::{Producer, Consumer}; let (p, c) = spsc_queue(DynamicBuffer::new(32).unwrap()); // Push and pop within a single thread p.push(1).unwrap(); assert_eq!(c.pop(), Ok(1)); // Push and pop from multiple threads. Since this example is using the // SPSC queue, only one producer and one consumer are allowed. let t1 = spawn(move || { for i in 0..10 { println!("Producing {}", i); p.push(i).unwrap(); } p }); let t2 = spawn(move || { loop { let i = c.pop().unwrap(); println!("Consumed {}", i); if i == 9 { break; } } }); t1.join().unwrap(); t2.join().unwrap();
Modules
buffer |
Memory buffer API |
mpmc |
Multiple-producer multiple-consumer queue |
mpsc |
Multiple-producer single-consumer queue |
spmc |
Single-producer multiple-consumer queue |
spsc |
Single-producer single-consumer queue |
Enums
PopError |
Possible errors for |
PushError |
Possible errors for |
TryPopError |
Possible errors for |
TryPushError |
Possible errors for |
Traits
Consumer |
The consumer end of the queue allows for receiving data. |
Producer |
The consumer end of the queue allows for sending data. |