#原子 #并行 #线程 #异步 #内容 #async-std

无 std utils-atomics

各种原子工具

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

Download history 123/week @ 2024-04-16 1/week @ 2024-06-11 87/week @ 2024-07-02 141/week @ 2024-07-30

每月 141 次下载
用于 blaze-rs

MIT 许可

145KB
2.5K SLoC

Crates.io docs.rs GitHub

原子工具

一个包含各种杂项原子相关工具的简单库

FillQueue

一个用于需要取出队列全部内容的用例的原子队列。

基本上,队列是一个原子单链表,节点首先分配,然后原子地更新列表的尾部。

当队列“被切割”时,列表的尾部被交换为 null,它的前一个尾部被用作 ChopIter 的基础。

性能

预期推送元素的性能将与推送元素到 SegQueueMutex<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