2 个版本

0.0.2 2021 年 11 月 6 日
0.0.1 2021 年 10 月 21 日
0.0.0 2021 年 10 月 21 日

#10 in #append-only

MIT/Apache

17KB
237

concurrent-list

一个仅追加、单写多读的展开链表。

最低支持的 Rust 版本 (MSRV) 为 1.56,用于 UnsafeCell::raw_get

concurrent-list 兼容 no_std(需要 alloc)。

许可证

许可协议为以下之一

您可任选其一。

贡献

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


lib.rs:

一个无锁的仅追加展开链表,具有单个写入器和多个独立读取器。

该列表通过由 [new] 创建的 Writer-Reader 对表示,数据存储在递增大小的连续块中,根据需要由 [Writer::push()] 分配并存储在链表中。在列表中推送新值是一个 O(1) 操作。

Reader 可被克隆,并可遍历数据,按顺序提供对每个元素的固定引用。迭代在列表末尾优雅地停止,并可恢复。推进迭代是一个 O(1) 操作。

WriterReader 都持有对列表的引用计数,当 Writer 和所有 Reader 被丢弃时,将解除分配。

无运行时依赖