#环形缓冲区 #spsc #索引 #多个 #可读 #索引 #绝对

indexed-ring-buffer

一个索引多个可读的 spsc 环形缓冲区

4 个版本

0.1.3 2020 年 2 月 13 日
0.1.2 2020 年 2 月 4 日
0.1.1 2020 年 1 月 31 日
0.1.0 2020 年 1 月 31 日

#索引 中排名 28

Download history 4/week @ 2024-04-13 47/week @ 2024-05-18 3/week @ 2024-05-25 17/week @ 2024-06-15 35/week @ 2024-06-22 13/week @ 2024-07-06 1/week @ 2024-07-13 42/week @ 2024-07-27

每月下载量 56

MIT/Apache 许可协议

15KB
288 行(不包括注释)

索引环形缓冲区

一个索引多个可读的 spsc 环形缓冲区。

概述

  • 通过绝对索引访问。
  • 单生产者单消费者,多读者。
  • 使用 parking_lot 的 RwLock。

示例

extern crate indexed_ring_buffer;
use indexed_ring_buffer::*;

let (mut p, mut c, r) = indexed_ring_buffer::<usize>(0, 5);

for i in 0..101 {
    p.push(i);
    c.shift();
}

for i in 101..106 {
    p.push(i);
}

let (start, end, data) = r.get_from(101,5).unwrap();
assert_eq!(data,vec![101,102,103,104,105]);
assert_eq!(start,101);
assert_eq!(end,105);

c.shift_to(105);
let rslt = r.get_all();
assert_eq!(rslt,None);

许可协议

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则任何有意提交以包含在作品中的贡献,如 Apache-2.0 许可证中定义,应如上所述双许可,不附加任何额外条款或条件。

依赖关系

~0.5–0.8MB
~13K SLoC