C++如何比较atomic_ints

C++ how to compare atomic_ints?

本文关键字:atomic ints 比较 何比较 C++      更新时间:2023-10-16

我的目标系统有g++4.6.3,它支持C++0x(但不支持C++11)。我使用atomic_int来存储我在两个线程之间访问的状态变量。然而,似乎没有为这种类型定义一个不等于运算符。如何比较atomic_ints?

由于atomic_int的转换运算符,您应该能够直接比较它们。如果这不起作用,那么你只需要找到一个编译器特定的解决方案。如果您显式强制转换它们,或者使用load()成员函数或atomic_load()非成员函数,它可能会起作用:

static_cast<int>(a) == static_cast<int>(b)
a.load() == b.load()
atomic_load(&a) == atomic_load(&b)

你应该注意,这不是任何形式的原子比较,所以确保你没有试图用这个比较做一些你不应该做的事情。