2个版本
0.1.1 | 2022年1月3日 |
---|---|
0.1.0 | 2021年12月28日 |
#793 in 并发
11KB
84 代码行
Atomic Story
理解原子操作和内存顺序需要时间,也可能是一次痛苦的旅程。这是我自己的经历。
我觉得拥有一个包含简单单元测试的仓库可以帮助我加深对这个主题的理解。此外,这是一种非常紧凑的知识传递方式——这就是为什么我将其公开的原因。
结构
一个计数器:一个写者和一个读者
这是一个最简单的例子。使用 Relaxed
就足够了,因为我们只是在所有线程都增加值之后检查最终值。
两个有依赖关系的数字。
这个例子更有趣。有两个线程:一个写者和一个读者。还有两个值,num_a
和 num_b
。这个例子探讨了不同的 Ordering
组合以及它们如何产生不同的结果。
如何运行测试/示例
它们只是 Rust 测试。运行
cargo test
lib.rs
:
Atomic Story
理解原子操作和内存顺序需要时间,也可能是一次痛苦的旅程。这是我自己的经历。
我觉得拥有一个包含简单单元测试的仓库可以帮助我加深对这个主题的理解。此外,这是一种非常紧凑的知识传递方式——这就是为什么我将其公开的原因。
结构
一个计数器:一个写者和一个读者
这是一个最简单的例子。使用 Relaxed
就足够了,因为我们只是在所有线程都增加值之后检查最终值。
两个有依赖关系的数字。
这个例子更有趣。有两个线程:一个写者和一个读者。还有两个值,num_a
和 num_b
。这个例子探讨了不同的 Ordering
组合以及它们如何产生不同的结果。
如何运行测试/示例
cargo test
依赖关系
~6–32MB
~426K SLoC