比较并交换库?

3

在C++中,最好的用于原子比较并交换操作的跨平台库是什么?

或至少在Linux和Windows上的amd64体系结构中是什么?

4个回答

2

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

如果您在两个平台上都使用GCC,则可以直接使用GCC的原子原语,因为它们与硬件架构而非操作系统平台相关联。

否则,如PeterK所建议的,可以查看Boost。有一个Boost.Atomic候选库;我不知道它被纳入的状态是什么。


我现在正在使用__sync_val_compare_and_swap。我只是假设这个相对常见的功能会有一个被广泛使用的标准库。 - James P Michels III

1

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


可能是我的疏忽,但我检查了boost,发现无法支持适用于64位数据类型的CAS操作。您能否给我展示一下您的意思? - James P Michels III
1
@peter:Boost在竞态方面的支持非常不足。在生产中使用Boost之前,我强烈建议对代码进行审计。你会惊讶于你所发现的问题。 - jww

1

除了boost之外,还有TBB(线程构建块)这个选择。它不像boost那样是一个大型库,而是专注于并行编程。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接