- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的应用程序中,我通常希望拦截 SIGINT
和 SIGTERM
信号以便正常关闭。
为了防止工作线程“窃取”信号,我在每个入口点都这样做:
// Block signals in this thread
sigset_t signal_set;
sigaddset(&signal_set, SIGINT);
sigaddset(&signal_set, SIGTERM);
sigaddset(&signal_set, SIGHUP);
sigaddset(&signal_set, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &signal_set, NULL);
如果我不这样做,当我执行 Ctrl+C 时,有时(未指定哪个线程将获得信号)我的处理程序在基本线程不会被调用——相反,信号只是从工作线程中终止进程。这显然不酷。
所以我有一个信号处理线程并在其他地方阻塞信号。
但是,我没有注意到其他人这样做,很容易忘记这样做,而且它也不是完全可移植的。我还缺少一些更简单的技巧吗?
引用资料:
最佳答案
我觉得这是一件非常合理的事情。
您可以在生成任何其他线程之前阻塞 main
中的信号。生成的线程将继承创建者线程信号掩码,您只能在信号处理线程中解除阻塞信号(只有当该线程也生成其他线程时才要小心)。
或者你可以让信号在任何地方都被阻塞,并通过 sigwait
和信号处理线程中的 friend 明确地处理它们。
关于c++ - 我是否过度设计了每线程信号阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498309/
我正在开发适用于 Wordpress 的 PSD,并面临着根据颜色过度对齐背景图像或相反的问题。 在桌面上一切都很好,但在移动设备上背景图像变小了(我使用了 background-size: 100%
在标准 Modelica 流体流量源中,通常指定流量或压力。例如,以下边界设置(P 表示压力边界,F 表示流量边界)通常会围绕管道组件: P - 管道 - P F - 管道 - P 但是,有时在同一侧
我正处于设计基于 Azure 的应用程序的早期阶段。考虑到我可能预期的需求的变化性,Azure 吸引我的地方之一是它的可扩展性。因此,我试图保持事物松散耦合,以便我可以在需要时添加实例。 我看到的关于
我与 Xcode 4 dot notation code sense problem 正好相反!点符号的代码完成不仅显示属性,还显示我的方法(在每个完成的左侧标记 P 或 M 分别指示它是属性还是方法
我是一名优秀的程序员,十分优秀!