提问人:Max Paython 提问时间:1/13/2022 最后编辑:Jarod42Max Paython 更新时间:1/13/2022 访问量:415
C++/C 在单指令中检查和切换布尔值
C++/C check and toggle a bool in single instruction
问:
我正在寻找一种 C++ 类型(或可能是 C)的方法,即在单个指令中检查(if 语句)和编辑。谷歌搜索让我无处可去,也许我使用了错误的关键字。bool
int
bool
例:
bool valid;
.
.
.
if(valid){
valid = false;
// do stuff
}
现在,我使用 ,但仍然和 是不同的指令,在多线程环境中,有一些东西介于两者之间。有没有办法在不使用互斥锁的情况下使这 2 个操作原子化?std::atomic<bool>
if(valid)
valid = false
我正在使用 GCC 11 / G++ 11。
答: 暂无答案
评论
int
s 和 s 不是原子的(在 C 和 C++ 中),尝试从多个线程访问它们会导致 UB,无论位操作多么聪明。bool