File tree Expand file tree Collapse file tree 1 file changed +5
-3
lines changed Expand file tree Collapse file tree 1 file changed +5
-3
lines changed Original file line number Diff line number Diff line change @@ -993,11 +993,13 @@ MSVC 无法使用 GCC 的编译器扩展,GCC 也肯定无法使用 MSVC 的扩
993
993
994
994
## CPU 变量
995
995
996
- CPU 变量的概念很好理解。就像线程变量为每个线程提供独立的对象实例,互不干扰一样,CPU 变量也是如此。
996
+ CPU 变量的概念很好理解。就像线程变量为每个线程提供独立的对象实例,互不干扰一样,CPU 变量也是如此。在创建 CPU 变量时,系统上的每个 CPU [^2] 都会获得该变量的一个副本。
997
997
998
- 在创建 CPU 变量时,系统上的每个 CPU [^2] 都会获得该变量的一个副本 。
998
+ 在 Linux 内核中,从 2.6[^3] 版本开始引入了 **Per-CPU** 变量(Per-CPU variables)功能。Per-CPU 变量是为每个处理器单独分配的变量副本,旨在减少多处理器访问共享数据时的同步开销,提升性能。每个处理器只访问自己的变量副本,不需要进行同步操作,避免了数据竞争,增强了并行处理能力 。
999
999
1000
- 实际上,这就是在说 Linux 2.6 [^3]引入的 **Per-CPU** 内核功能。
1000
+ 在 Windows 内核中,没有直接对应的 Per-CPU 变量机制。
1001
+
1002
+ 本节是偏向概念的认识,而非实际进行内核编程,C++ 语言层面也并未提供此抽象。理解 CPU 变量的概念对于系统编程和内核开发非常重要。这些概念在面试和技术讨论中常常出现,掌握这些知识不仅有助于应对面试问题,也能提升对多处理器系统性能优化的理解。
1001
1003
1002
1004
[^2]: “*每个 CPU*”,指的是系统中的每个物理处理器或每个逻辑处理器(如果超线程被启用)。
1003
1005
You can’t perform that action at this time.
0 commit comments