Linux中的atomic_t

前端之家收集整理的这篇文章主要介绍了Linux中的atomic_t前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究Robert Love的 Linux内核开发 Linux内核.

如您所知,本书使用旧版Linux.它是2.6版本

atomic_t有“volatile int counter”.但是新Linux版本的atomic_t的“int counter”并不易变.为什么这种挥发性已经消失了?

解决方法

因为volatile变量不是原子变量.使用volatile的唯一要点是防止可能的编译器优化,这与防止不需要的并发访问不同.

在这方面,挥发性物质的使用几乎永远不正确.

你可以在Semantics and Behavior of Atomic and Bitmask Operations阅读更多相关信息.

引用其中的一小部分:

@H_301_18@* WARNING: atomic_read() and atomic_set() DO NOT IMPLY BARRIERS! *

Some architectures may choose to use the volatile keyword,barriers,or inline
assembly to guarantee some degree of immediacy for atomic_read() and
atomic_set(). This is not uniformly guaranteed,and may change in the future,
so all users of atomic_t should treat atomic_read() and atomic_set() as simple
C statements that may be reordered or optimized away entirely by the compiler
or processor,and explicitly invoke the appropriate compiler and/or memory
barrier for each use case. Failure to do so will result in code that may
suddenly break when used with different architectures or compiler
optimizations,or even changes in unrelated code which changes how the
compiler optimizes the section accessing atomic_t variables.

@H_301_18@* YOU HAVE BEEN WARNED! *

猜你在找的Linux相关文章