File tree 1 file changed +5
-4
lines changed
1 file changed +5
-4
lines changed Original file line number Diff line number Diff line change @@ -685,9 +685,9 @@ print("end"); // 2
685
685
686
686
### 可见
687
687
688
- 可见 是多线程并发编程中的一个重要概念 ,它描述了一个线程中的数据修改对其他线程的可见程度。具体来说,如果线程 A 对变量 x 进行了修改,那么** 其他线程 B 是否能够看到线程 A 对 x 的修改** ,就涉及到可见的问题。
688
+ ** 可见 ** 是 C++ 多线程并发编程中的一个重要概念 ,它描述了一个线程中的数据修改对其他线程的可见程度。具体来说,如果线程 A 对变量 x 进行了修改,那么** 其他线程 B 是否能够看到线程 A 对 x 的修改** ,就涉及到可见的问题。
689
689
690
- 在讨论多线程的内存模型和执行顺序时,虽然经常会提到 CPU 重排、编译器优化、缓存等底层细节,但真正核心的概念是可见 ,而不是这些底层实现细节。
690
+ 在讨论多线程的内存模型和执行顺序时,虽然经常会提到 CPU 重排、编译器优化、缓存等底层细节,但真正核心的概念是 * 可见 * ,而不是这些底层实现细节。
691
691
692
692
** C++ 标准中的可见** :
693
693
@@ -702,11 +702,12 @@ C++ 标准通过内存序(memory order)来定义如何确保这种*可见*
702
702
- * 可见* 关注的是线程之间的数据一致性,而不是底层的实现细节。
703
703
704
704
- 使用 C++ 的内存序机制可以确保数据修改的可见,而不必过多关注具体的 CPU 和编译器行为。
705
- 这种描述方式可以帮助更清楚地理解和描述多线程并发编程中如何通过 C++ 标准的内存模型来确保线程之间的数据一致性。
705
+
706
+ 这种描述方式可以帮助更清楚地理解和描述多线程并发编程中如何通过 C++ 标准的内存模型来确保线程之间的数据一致性,而无需太多关注底层细节。
706
707
707
708
---
708
709
709
- 我知道各位肯定有疑问,我们大多数时候写代码都从来没使用过内存序 ,一般都是互斥量、条件变量等高级设施 ,这没有可见性的问题吗?
710
+ 我知道各位肯定有疑问,我们大多数时候写多线程代码都从来没使用过内存序 ,一般都是互斥量、条件变量等高级同步设施 ,这没有可见性的问题吗?
710
711
711
712
没有,这些设施自动确保数据的可见性。例如: ` std::mutex ` 的 ` unlock() ` 保证:
712
713
You can’t perform that action at this time.
0 commit comments