7 个版本 (4 个重大变更)

0.5.0 2024年5月9日
0.4.0 2023年8月23日
0.3.0 2023年8月21日
0.2.0 2023年2月10日
0.1.1 2022年3月25日

#142并发 中排名

Download history 287/week @ 2024-04-14 87/week @ 2024-04-21 87/week @ 2024-04-28 337/week @ 2024-05-05 112/week @ 2024-05-12 99/week @ 2024-05-19 136/week @ 2024-05-26 204/week @ 2024-06-02 526/week @ 2024-06-09 94/week @ 2024-06-16 67/week @ 2024-06-23 183/week @ 2024-06-30 285/week @ 2024-07-07 355/week @ 2024-07-14 304/week @ 2024-07-21 160/week @ 2024-07-28

每月 1,104 次下载

MIT 许可证

60KB
1.5K SLoC

STM

async-stm 是软件事务内存的一个实现。它最初受到 rust-stm 的启发,但采取了一些不同的方法,更符合传统风格。

以下是对其进行了以下扩展:

  • 使 atomically 异步,因此 STM 操作可以与 tokio 一起使用,而不会阻塞整个线程。
  • 添加了用错误 abort 事务的功能,调用者必须处理。
  • 事务通过线程局部变量传递,以简化 TVar API。
  • 读取 TVar 返回一个 Arc,因此克隆可以延迟到我们需要修改结果时。
  • 添加了将辅助事务一起提交或回滚 STM 事务的选项,该辅助事务在检测到一些冲突时也可以导致重试。这是一种混合持久 STM 解决方案的可能性。
  • 添加了一些基于 Simon Marlow 的书籍《Haskell 并行和并发编程》的基于队列的选项实现。

请查看 测试 以了解示例用法。

先决条件

安装以下内容以构建项目

curl https://sh.rustup.rs -sSf | sh
rustup toolchain install nightly
rustup default stable
rustup update

基准测试

包含基准测试,以帮助比较不同队列实现的权衡。

cargo +nightly bench "bench" --all-features

更多信息

许可证

本项目采用 MIT 许可证

依赖项

~2.4–9MB
~58K SLoC