Моя целевая система имеет 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)
Вы должны заметить, что это не атомарное сравнение любого рода, поэтому убедитесь, что вы не пытаетесь делать то, что не следует делать с этим сравнением.
Других решений пока нет …