为什么C/C++标准库未提供atomic_flag_test_and_clear原子操作?
C/C++ atomic_flag 操作支持情况
atomic_flag_test_and_set支持!atomic_flag_clear支持!atomic_flag_test_and_clear不支持atomic_flag_set不支持
如果想在某个上下文里为事件设置标志,在另一个上下文里检查并清除该事件,C/C++不允许每个上下文通过单次原子调用完成此操作。
你必须反转标志逻辑:事件触发时清除标志,检查事件时执行检查并设置标志的操作。
这不算大问题,但这种场景下逻辑显得有些反常——尤其是标志默认状态为false时,反转逻辑意味着事件默认处于断言状态。
另外,也可以用搭配atomic_exchange操作的atomic bool作为替代方案。
内容的提问来源于stack exchange,提问作者Sniperchang
相关产品推荐
相关产品推荐

