diff --git a/Documentation/zh_CN/volatile-considered-harmful.txt b/Documentation/zh_CN/volatile-considered-harmful.txt index ba8149d2233a04..d37913d265de38 100644 --- a/Documentation/zh_CN/volatile-considered-harmful.txt +++ b/Documentation/zh_CN/volatile-considered-harmful.txt @@ -48,7 +48,7 @@ C程序员通常认为volatile表示某个变量可以在当前执行的线程 do_something_else_with(&shared_data); spin_unlock(&the_lock); -如果所有的代码都遵循加锁规则,当持有the_lock的时候,不可能意外的改变shared_data的 +如果所有的代码都遵循加锁规则,当持有the_lock的时候,不可能意外地改变shared_data的 值。任何可能访问该数据的其他代码都会在这个锁上等待。自旋锁原语跟内存屏障一样—— 它 们显式的用来书写成这样 —— 意味着数据访问不会跨越它们而被优化。所以本来编译器认为 它知道在shared_data里面将有什么,但是因为spin_lock()调用跟内存屏障一样,会强制编 @@ -76,11 +76,11 @@ cpu_relax()调用会降低CPU的能量消耗或者让位于超线程双处理器 在内核中,一些稀少的情况下volatile仍然是有意义的: - - 在一些体系架构的系统上,允许直接的I/0内存访问,那么前面提到的访问函数可以使用 + - 在一些体系架构的系统上,允许直接的I/O内存访问,那么前面提到的访问函数可以使用 volatile。基本上,每一个访问函数调用它自己都是一个小的临界区域并且保证了按照 程序员期望的那样发生访问操作。 - - 某些会改变内存的内联汇编代码虽然没有什么其他明显的附作用,但是有被GCC删除的可 + - 某些会改变内存的内联汇编代码虽然没有什么其他明显的副作用,但是有被GCC删除的可 能性。在汇编声明中加上volatile关键字可以防止这种删除操作。 - Jiffies变量是一种特殊情况,虽然每次引用它的时候都可以有不同的值,但读jiffies @@ -88,7 +88,7 @@ cpu_relax()调用会降低CPU的能量消耗或者让位于超线程双处理器 其他跟jiffies相同类型变量使用volatile。Jiffies被认为是一种“愚蠢的遗留物" (Linus的话)因为解决这个问题比保持现状要麻烦的多。 - - 由于某些I/0设备可能会修改连续一致的内存,所以有时,指向连续一致内存的数据结构 + - 由于某些I/O设备可能会修改连续一致的内存,所以有时,指向连续一致内存的数据结构 的指针需要正确的使用volatile。网络适配器使用的环状缓存区正是这类情形的一个例 子,其中适配器用改变指针来表示哪些描述符已经处理过了。