2010-07-01 51 views

回答

2

这取决于您需要的编译器兼容性。

如果您在两个平台上都使用GCC,则可以使用GCC的原子基元,因为它们绑定到硬件体系结构,而不是OS平台。

否则,正如PeterK所建议的,看看Boost吧。有一个Boost.Atomic候选库;我不知道它被纳入的地位是什么。

+0

我现在正在使用__sync_val_compare_and_swap。我只是假设这个相对常见的功能会有一个广泛使用的标准库。 – 2010-07-01 20:45:24

1

尝试使用boost。它为原子操作提供了很多支持。

+0

大概是我自己的失明,但我检查了boost,并且我无法支持可以在64位数据类型上工作的CAS操作。你有什么机会向我展示你的意思? – 2010-07-01 20:42:25

+1

@peter:Boost很可惜缺乏对比赛的适当支持。在生产中使用Boost之前,我强烈建议对代码进行审核。你会惊讶你发现。 – jww 2011-09-05 08:54:06

1

提升的替代方法是TBB(线程构建模块)。这不是一个像boost一样的大规模库,并且专注于并行编程。