SIGTERM不能终止一个繁忙的等待进程



我有一个多线程设置。其中一个线程在一个原子上旋转。对象,由另一个线程自增。

//global
atomic <size_t> var;
// in thread-1
while(var.load(memory_order_relaxed) == 0)
{
//busy wait
}
// do something ...

我观察到,如果另一个线程在没有增加var的情况下完成,则不能使用ctrl+c或在htop中使用SIGTERM杀死该进程。我必须使用SIGKILL。有什么原因吗?

我发现我这边有一个bug。SIGTERM确实像预期的那样工作

已存在的信号处理程序,用于停止后续事件的处理。但是在while循环中繁忙的当前事件没有结束,因此出现了问题。

最新更新