13

按照标题。我可以std::atomic<>在信号处理程序中使用还是sig_atomic_t提供其他编译器功能?

4

1 回答 1

16

n3376 1.9/6

当抽象机的处理因接收到信号而中断时,既不是

— 类型为 volatile std::sig_atomic_t nor

— 无锁原子对象 (29.4)

在信号处理程序执行期间未指定,并且处理程序修改的任何不在这两个类别中的任何一个对象的值都将变为未定义。

无锁 29.4/1,2

ATOMIC_..._LOCK_FREE 宏指示相应原子类型的无锁属性,有符号和无符号变体组合在一起。这些属性也适用于原子模板的相应(部分)特化。值 0 表示这些类型从不无锁。值 1 表示这些类型有时是无锁的。值 2 表示类型始终是无锁的。

函数atomic_is_lock_free (29.6) 指示对象是否是无锁的。在任何给定的程序执行中,无锁查询的结果对于所有相同类型的指针都应该是一致的。

于 2013-04-11T12:44:54.883 回答