(int signal) {}
// Install a signal handler
std::signal如果变量是在处理程序和线程之间共享的--就像上面的gSignalStatus一样,但没有volatile。根据的回答,似乎需要volatile。但结果的排序约束仅在同一线程中执行的线程和信号处理程序之间建立
但是,C11标准指出,函数信号()不能在多线程环境中调用,或者行为是未定义的。但我认为信号机制本质上是针对多线程环境的。A引用C11标准7.14.1.1.7
下面的代码是不言而喻的.}
{ // Register the signal handler in main thread context.
//
我打算在linux上使用USR信号,以便与在后台作为服务运行的python程序进行通信。
我发现,正如预期的那样,我发送的信号似乎是立即以异步方式处理的。因此,我曾经认为注册的信号处理程序在它们自己的线程中运行,我认为这将解释为什么在循环中发送信号时,下面的代码将同时打印多行Signal handler called with signal 10。"Python总是在主Python线程中执行,即使信号是在另一个线程中接收到的“。此外,对于上面的示例,我没有看到系统上运行单独的<