8个版本 (4个稳定版)
2.2.0 | 2024年8月13日 |
---|---|
2.1.0 | 2024年1月17日 |
2.0.0 | 2023年12月7日 |
1.0.1 | 2022年9月22日 |
0.1.0 |
|
726 在 音频 中
每月306 次下载
在 2 个库 中使用
205KB
351 行
atomic-queue
用于音频应用的多生产者多消费者有界无锁队列,移植自 https://github.com/max0x7ba/atomic_queue。
在i7上的性能比ringbuf
慢得多(约2倍)。
考虑到这个队列支持多生产者和多消费者,而ringbuf
是单生产者单消费者,我认为这可以接受。
在M1 Pro Macbook上快30%。
许可证
MIT
lib.rs
:
atomic_queue
是将C++的max0x7ba/atomic_queue实现移植到Rust。
这是augmented-audio的一部分。
它提供了一个有界的多生产者、多消费者无锁队列,适用于实时应用。
使用方法
let queue: atomic_queue::Queue<usize> = atomic_queue::bounded(10);
queue.push(10);
if let Some(v) = queue.pop() {
assert_eq!(v, 10);
}
安全性
此队列实现内部使用unsafe。
性能
在2017年i7上进行基准测试时,此队列的性能远低于ringbuf
(约2倍)。
考虑到这个队列支持多生产者和多消费者,而ringbuf
是单生产者单消费者,我认为这可以接受。
在M1 Pro上再次测试,速度快30%。