【发布时间】:2011-10-01 10:32:27
【问题描述】:
我的程序中需要有原子变量。以前我用的是std::atomic<int>,但是我现在工作的平台没有支持C++0x的g++编译器。我使用了volatile int,它似乎可以正常工作,因为我在测试它的多核系统中还没有经历过竞争条件。
我的问题是volatile int 是否像std::atomic<int> 一样原子?此外,它是否会创建内存屏障(我也需要)?
【问题讨论】:
-
如果是,他们为什么要添加
atomic<>? ;) 通常的经验法则适用,语言设计者并非完全疯了,所以他们这样做可能有一些原因:) -
那么解决办法是什么?有什么想法吗?
-
“解决方案”?你问了什么基本上是一个是/否的问题。答案是“不”(原因是,正如我所说,“如果他们确实做了同样的事情,就没有理由添加
atomic)。但是没有您的问题中有问题陈述,因此没有“解决方案”的空间。您是否正在寻找类似“不,volatile不适合这里,所以您需要使用std::atomic,或者使用适当的记忆障碍”?如果是这样,那么这就是你的答案。:)