Skip to content

Commit d3da6fc

Browse files
committed
稍微修改对“可见”描述的措辞
1 parent 74bd178 commit d3da6fc

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

Diff for: md/05内存模型与原子操作.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -685,9 +685,9 @@ print("end"); // 2
685685

686686
### 可见
687687

688-
可见 是多线程并发编程中的一个重要概念,它描述了一个线程中的数据修改对其他线程的可见程度。具体来说,如果线程 A 对变量 x 进行了修改,那么**其他线程 B 是否能够看到线程 A 对 x 的修改**,就涉及到可见的问题。
688+
**可见** 是 C++ 多线程并发编程中的一个重要概念,它描述了一个线程中的数据修改对其他线程的可见程度。具体来说,如果线程 A 对变量 x 进行了修改,那么**其他线程 B 是否能够看到线程 A 对 x 的修改**,就涉及到可见的问题。
689689

690-
在讨论多线程的内存模型和执行顺序时,虽然经常会提到 CPU 重排、编译器优化、缓存等底层细节,但真正核心的概念是可见,而不是这些底层实现细节。
690+
在讨论多线程的内存模型和执行顺序时,虽然经常会提到 CPU 重排、编译器优化、缓存等底层细节,但真正核心的概念是*可见*,而不是这些底层实现细节。
691691

692692
**C++ 标准中的可见**
693693

@@ -702,11 +702,12 @@ C++ 标准通过内存序(memory order)来定义如何确保这种*可见*
702702
- *可见* 关注的是线程之间的数据一致性,而不是底层的实现细节。
703703

704704
- 使用 C++ 的内存序机制可以确保数据修改的可见,而不必过多关注具体的 CPU 和编译器行为。
705-
这种描述方式可以帮助更清楚地理解和描述多线程并发编程中如何通过 C++ 标准的内存模型来确保线程之间的数据一致性。
705+
706+
这种描述方式可以帮助更清楚地理解和描述多线程并发编程中如何通过 C++ 标准的内存模型来确保线程之间的数据一致性,而无需太多关注底层细节。
706707

707708
---
708709

709-
我知道各位肯定有疑问,我们大多数时候写代码都从来没使用过内存序,一般都是互斥量、条件变量等高级设施,这没有可见性的问题吗?
710+
我知道各位肯定有疑问,我们大多数时候写多线程代码都从来没使用过内存序,一般都是互斥量、条件变量等高级同步设施,这没有可见性的问题吗?
710711

711712
没有,这些设施自动确保数据的可见性。例如: `std::mutex``unlock()` 保证:
712713

0 commit comments

Comments
 (0)