CAS-обработка 32 младших битов 64-битного слова в C++C++

Программы на C++. Форум разработчиков
Anonymous
CAS-обработка 32 младших битов 64-битного слова в C++

Сообщение Anonymous »

У меня есть 64-битная общая переменная, и один поток хочет CAS 32 младших бита этого слова, игнорируя при этом изменения в старших 32 битах этого слова. Есть ли портативный способ сделать это без блокировки?
Работает ли что-то подобное или нет обходных путей, которые не нарушают что-то, связанное со строгим псевдонимом или объектом C++. модель?:
union {
std::atomic desc;
struct {
std::atomic ldesc;
std::atomic hdesc;
};
} variable;

variable.desc = 0;
uint32_t x = 0;
variable.ldesc.compare_exchange_weak(x, 1);


Подробнее здесь: https://stackoverflow.com/questions/784 ... -word-in-c

Вернуться в «C++»