我有一个多线程设置。其中一个线程在一个原子上旋转。对象,由另一个线程自增。
//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循环中繁忙的当前事件没有结束,因此出现了问题。