可移植单词与C11原子操作的对齐

时间:2019-01-05 11:20:03

标签: c memory-alignment c11 atomicity

我想使用通常的CAS模式原子交换状态字:

void QLowEnergyController::connectToDevice()
// Connects to the remote Bluetooth Low Energy device.

但是由于extern int status; int change_state(void) { while (true) { int old = atomic_load(&status); int new = prepare_new_status(); if (atomic_compare_exchange_strong(&status, &old, new)) return old; } } 可能未对齐,或者可能是寄存器变量,因此old是可移植的吗?

如果没有,那么在&old访问必须按字对齐的体系结构上原子更新状态字的正确方法是什么?

0 个答案:

没有答案