【发布时间】:2011-10-04 02:35:13
【问题描述】:
根据Are C++ Reads and Writes of an int Atomic?,由于处理器缓存的问题,整数的读取(以及指针——或者我假设)在 C 中不是原子的。所以,我的问题是有一些我可以用来使读取原子,还是我需要使用锁?我查看了几组原子操作库,但到目前为止,我还找不到原子读取的函数。
编辑:编译器: Clang 2.9 编辑:平台: x86(64 位)
谢谢。
【问题讨论】:
-
如果是 GCC,你可以使用 are some features。我不会回答这个问题,因为我基本上是在重复别人的博客文章。
-
我根据您上次的编辑更新了您的标签。
-
注意术语。在正确对齐的内存上读取和写入 32 位结构 在 32+ 位平台上是原子的;也就是说,值不能在读取或写入的中途改变。 (大多数编译器正确对齐内存以实现这一点。)Clang 不能确保您获得的值与“最新”值一致,也不能确保读取和写入操作按照代码中显示的确切顺序发生。跨度>
-
还有什么平台? ARM?
-
真的有可能创造一个实际显示问题的情况吗?那会是什么样子?
标签: c multithreading concurrency atomic clang