- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
根据标题。我可以使用 std::atomic<>
在信号处理程序中或执行sig_atomic_t
提供其他编译器功能?
最佳答案
n3376 1.9/6
When the processing of the abstract machine is interrupted by receipt of a signal, the values of objects whichare neither
— of type volatile std::sig_atomic_t nor
— lock-free atomic objects (29.4)
are unspecified during the execution of the signal handler, and the value of any object not in either ofthese two categories that is modified by the handler becomes undefined.
无锁 29.4/1,2
The ATOMIC_..._LOCK_FREE macros indicate the lock-free property of the corresponding atomic types, withthe signed and unsigned variants grouped together. The properties also apply to the corresponding (partial)specializations of the atomic template. A value of 0 indicates that the types are never lock-free. A value of1 indicates that the types are sometimes lock-free. A value of 2 indicates that the types are always lock-free.
The function atomic_is_lock_free (29.6) indicates whether the object is lock-free. In any given programexecution, the result of the lock-free query shall be consistent for all pointers of the same type.
关于c++ - sig_atomic_t 和 std::atomic<> 可以互换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15949036/
编译器或操作系统如何区分 sig_atomic_t 类型和普通的 int 类型变量,并确保操作是原子的?使用两者的程序具有相同的汇编代码。如何特别注意使操作原子化? 最佳答案 sig_atomic_t
假设我有一个标志来指示我用信号启用的退出条件。例如,然后我可以将以下处理程序附加到 SIGUSR1。 volatile sig_atomic_t finished = 0; void catch_si
因为我需要在 SIGCHLD 到达时更新作业状态,所以我如何知道 sig_atomic_t 的值是否已更改?代码看起来像这样... sig_atomic_t child_status; sig_ato
这是一个使用 volatile sig_atomic_t 的简单玩具程序. #include #include #include #include #define UNUSED(x) (voi
我想要一个哈希表,其中对每个元素的访问都应该是原子的,我不想使用锁。我可以使用指针来引用 sig_atomic_t 类型的变量吗? 最佳答案 没有。 sig_atomic_t用于信号处理程序,它不会做
volatile sig_atomic_t 是一种在信号处理程序和主应用程序之间共享数据的有保障的安全方式。当在具有更宽松内存模型的现代 CPU 上运行时,Posix 能保证什么内存顺序。具体来说,在
根据 this站点,可以使用 volatile sig_atomic_t 类型的变量在信号处理程序中。现在我的问题是,例如下面的代码仍然是原子的,因此不会引入竞争条件吗? 假设我们正在使用多核处理器(
我正在尝试创建一个全局变量,在我的 msh.c 文件中初始化为: volatile sig_atomic_t sig_int = 0; 仅此一项似乎就可以了。但是,如果我转到我的 proto.h 文件
如题。我可以使用 std::atomic<> 吗?在信号处理程序中或执行 sig_atomic_t提供其他编译器功能? 最佳答案 n3376 1.9/6 When the processing of
在我的平台(X86、Fedora、gcc 9.1.1)上,sig_atomic_t 类型定义为普通的 int。 在 C++ 标准中,sig_atomic_t 始终与 volatile 限定符一起使用。
例子 #include #include #include volatile std::sig_atomic_t gSignalStatus = 0; void signal_handler(i
在我的 Linux 机器上,sig_atomic_t 是一个普通的旧 int。 ints 是否具有特殊的原子质量? $ gcc -v Using built-in specs. Target: x86
根据标题。我可以使用 std::atomic<>在信号处理程序中或执行sig_atomic_t提供其他编译器功能? 最佳答案 n3376 1.9/6 When the processing of th
如果我在具有原子读取和递增/递减支持的硬件上,我可以使用 volatile sig_atomic_t 吗?在 C++03 中访问原子操作并避免完全成熟的互斥锁,或者我必须等待 C++11 和 std:
volatile sig_atomic_t 是否提供任何内存顺序保证?例如。如果我只需要加载/存储一个整数,可以使用吗? 例如这里: volatile sig_atomic_t x = 0; ...
我是一名优秀的程序员,十分优秀!