1个不稳定版本
0.1.1 | 2021年4月25日 |
---|---|
0.1.0 |
|
#980 在 并发
4,079 每月下载量
用于 6 个crates (3 直接)
11KB
198 行
llq
一个无等待的单生产者单消费者链表队列,节点可单独重用。
队列操作不会阻塞或分配内存。单个节点单独分配和管理,可以在多个队列中重用。
示例
使用队列在线程之间发送值
use llq::{Node, Queue};
let (mut producer, mut consumer) = Queue::<usize>::new().split();
producer.push(Node::new(0));
producer.push(Node::new(1));
producer.push(Node::new(2));
std::thread::spawn(move || {
assert_eq!(*consumer.pop().unwrap(), 0);
assert_eq!(*consumer.pop().unwrap(), 1);
assert_eq!(*consumer.pop().unwrap(), 2);
assert!(consumer.pop().is_none());
}).join().unwrap();
在多个队列之间重用节点
use llq::{Node, Queue};
let (mut producer1, mut consumer1) = Queue::<usize>::new().split();
let (mut producer2, mut consumer2) = Queue::<usize>::new().split();
let node = Node::new(3);
producer1.push(node);
let node = consumer1.pop().unwrap();
producer2.push(node);
let node = consumer2.pop().unwrap();
assert_eq!(*node, 3);
许可证
llq
以MIT许可和Apache许可版本2.0的条款分发。贡献也在此条款下接受。