2 个版本
0.0.2 | 2021 年 11 月 6 日 |
---|---|
0.0.1 | 2021 年 10 月 21 日 |
0.0.0 |
|
#10 in #append-only
17KB
237 行
concurrent-list
一个仅追加、单写多读的展开链表。
最低支持的 Rust 版本 (MSRV) 为 1.56,用于 UnsafeCell::raw_get
。
concurrent-list
兼容 no_std
(需要 alloc
)。
许可证
许可协议为以下之一
- Apache 许可证 2.0 版(《LICENSE-APACHE》或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
您可任选其一。
贡献
除非您明确声明,否则您有意提交以包含在作品中的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。
lib.rs
:
一个无锁的仅追加展开链表,具有单个写入器和多个独立读取器。
该列表通过由 [new
] 创建的 Writer
-Reader
对表示,数据存储在递增大小的连续块中,根据需要由 [Writer::push()
] 分配并存储在链表中。在列表中推送新值是一个 O(1)
操作。
Reader
可被克隆,并可遍历数据,按顺序提供对每个元素的固定引用。迭代在列表末尾优雅地停止,并可恢复。推进迭代是一个 O(1)
操作。
Writer
和 Reader
都持有对列表的引用计数,当 Writer
和所有 Reader
被丢弃时,将解除分配。