在c ++中用于原子比较和交换操作的最佳跨平台库是什么?
...或者至少在Linux和Windows上使用amd64?
答案 0 :(得分:2)
这取决于您需要的编译器兼容性。
如果您在两个平台上都使用GCC,那么您可以使用GCC的原子基元,因为它们与硬件架构相关联,而不是与OS平台相关联。
否则,正如PeterK建议的那样,看看Boost。有一个Boost.Atomic候选图书馆;我不知道它被纳入的地位是什么。
答案 1 :(得分:1)
尝试使用boost。它为原子操作提供了很多支持。
答案 2 :(得分:1)
boost的另一种选择是TBB(线程构建块)。它不是像boost那样的大规模lib,而是专注于并行编程。
答案 3 :(得分:0)
C ++ 0X将[最终]解决这个问题。对于GCC,请参阅http://gcc.gnu.org/wiki/Atomic/GCCMM/ExecutiveSummary和http://gcc.gnu.org/wiki/Atomic/GCCMM/DataRaces。