用于 Rust 的并发排列测试工具。
Loom 是一个用于测试并发 Rust 代码的测试工具。它会多次运行一个测试。 次,对该测试在给定条件下的可能并发执行进行排列。 [C11 内存模型][spec]。它使用[状态缩减 技术][cdschecker]以避免组合爆炸。
[loom 文档][docs] 中有更多关于此的详细说明。
如何使用 Loom。但如果你只是想快速上手,首先将以下内容添加进去
你的 Cargo.toml。
loom = "0.7"接下来,创建一个测试文件并添加一个测试:
…然后,运行测试。
RUSTFLAGS="--cfg loom" cargo test --test buggy_concurrent_inc --releaseLoom 目前尚未实现完整的 C11 内存模型。 以下是不支持特性的(不完整)列表。
SeqCst 访问(例如 load、store 等):
它们被视为 AcqRel。也就是说,它们施加了较弱的同步,
导致 Loom 产生误报(不完整)。参见
#180 中的示例。另一方面,
fence(SeqCst) 是受支持的。tests/litmus.rs 中的 load_buffering 测试用例。本项目采用 MIT 许可证 授权。
除非您明确声明 otherwise,否则您有意提交以包含在 loom 中的任何贡献,均应按 MIT 许可证授权,不附加任何额外条款或条件。
[][docs] [docs]: https://docs.rs/loom [spec]: https://en.cppreference.com/w/cpp/atomic/memory_order [cdschecker]: http://plrg.eecs.uci.edu/publications/toplas16.pdf [target.'cfg(loom)'.dependencies]
暂无开放 Issues,或尚未同步最近议题。