#lock-free-queue #producer-consumer #multi-producer #bounded #real-time #multiple

atomic-queue

用于音频应用的简单有界无锁队列,移植自 https://github.com/max0x7ba/atomic_queue

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 2021年7月9日

726音频

Download history 13/week @ 2024-05-03 4/week @ 2024-05-10 14/week @ 2024-05-17 17/week @ 2024-05-24 17/week @ 2024-05-31 17/week @ 2024-06-07 23/week @ 2024-06-14 17/week @ 2024-06-21 8/week @ 2024-06-28 9/week @ 2024-07-05 17/week @ 2024-07-12 14/week @ 2024-07-19 85/week @ 2024-07-26 30/week @ 2024-08-02 148/week @ 2024-08-09 41/week @ 2024-08-16

每月306 次下载
2 个库 中使用

MIT 许可证

205KB
351

atomic-queue

crates.io docs.rs


用于音频应用的多生产者多消费者有界无锁队列,移植自 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%。

无运行时依赖