Skip to content

Commit

Permalink
2_Atomics.md: typo
Browse files Browse the repository at this point in the history
  • Loading branch information
Luv-Ray authored and fwqaaq committed Oct 31, 2023
1 parent 1c95d2e commit 037e508
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion 2_Atomics.md
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ fn increment(a: &AtomicU32) {
2. 我们计算我们想要存储在 a 的新值,而不考虑其他线程的并发修改。
3. 我们使用 compare_exchange 去更新 a 的值,但**当它的值仍然与我们之前加载的值相同时。
4. 如果 a 确实和之前一样,它现在被我们的新值所取代,我们就完成了。
5. 如果 a 并不和之前相同,那么自从我们加载它以来,它一定短时间被另一个线程改变了。`compare_exchange` 操作给我门提供了 a 的改变值,并且我们将再次尝试使用该值。加载和更新之间的时间非常短暂,它不可能循环超过几次迭代。
5. 如果 a 并不和之前相同,那么自从我们加载它以来,它一定短时间被另一个线程改变了。`compare_exchange` 操作给我们提供了 a 的改变值,并且我们将再次尝试使用该值。加载和更新之间的时间非常短暂,它不可能循环超过几次迭代。

> 如果原子变量从某个值 A 更改到 B,但在 load 操作之后和 compare_exchange 操作之前又变回 A,即使原子变量在此期间发生了变化(并且回变),compare_exchange 操作也会成功。在很多示例中,就像在我们的递增示例中一样,这并不是问题。然而,有几种算法,通常涉及原子指针,这样的情况就会产生问题。这就是所谓的 <a id="index-ABAproblem"></a> ABA 问题。
Expand Down

0 comments on commit 037e508

Please sign in to comment.