19 个版本 (5 个稳定版)
1.1.2 | 2023 年 12 月 20 日 |
---|---|
1.1.0 | 2023 年 11 月 11 日 |
1.0.1 | 2023 年 10 月 18 日 |
1.0.0 | 2023 年 5 月 5 日 |
0.2.3 | 2022 年 9 月 20 日 |
#15 在 #async-std 中
每月 141 次下载
用于 blaze-rs
145KB
2.5K SLoC
原子工具
一个包含各种杂项原子相关工具的简单库
FillQueue
一个用于需要取出队列全部内容的用例的原子队列。
基本上,队列是一个原子单链表,节点首先分配,然后原子地更新列表的尾部。
当队列“被切割”时,列表的尾部被交换为 null,它的前一个尾部被用作 ChopIter
的基础。
性能
预期推送元素的性能将与推送元素到 SegQueue
或 Mutex<Vec<_>>
相似,但“切割”元素预计将比使用 Mutex<Vec<_>>
快大约 2 倍,比 SegQueue
快 3 倍。
您可以在 这里查看基准测试结果。
当您需要以下情况时使用 FillQueue
- 您需要一个可由共享引用更新的队列
- 您希望一次性检索队列的所有元素
- 元素检索的顺序没有特别要求,或者顺序是 LIFO(后进先出)
不要使用 FillQueue
当
- 您不需要可由共享引用更新的队列
- 您想逐个检索队列的元素(请参阅
SegQueue
) - 您需要按特定顺序检索元素,该顺序不是 LIFO
功能
名称 | 描述 | 启用 | 默认 |
---|---|---|---|
std |
启用 libstd 功能 | alloc |
是 |
alloc |
启用 liballoc 功能 | 是(通过 std ) |
|
alloc_api |
启用 allocator_api 功能 |
alloc & nightly |
否 |
futures |
启用 async/await 功能 | 否 | |
const |
启用常量 trait 实现 | 否 | |
nightly |
启用夜间功能 | 是 |
依赖项
~1.6–2.3MB
~47K SLoC