信号处理程序与事件处理程序

Posted

技术标签:

【中文标题】信号处理程序与事件处理程序【英文标题】:signal handler vs event handler 【发布时间】:2013-08-29 00:29:03 【问题描述】:

最近在一次采访中,他们要求我指出信号处理程序和事件处理程序之间的区别。我从未在 Linux 中遇到过事件处理程序,但在使用 Google 搜索后,我发现 Windows 中存在事件处理程序。

我只想了解有关此问题的更多信息。欢迎提供任何信息。

【问题讨论】:

信号比事件更粗糙,更具侵入性。 GUI 程序通常有一个响应事件的主循环——在 WinAPI 和 X11 中。 我已编辑,请纠正我@Jonathan Leffler。 【参考方案1】:

我发现用户必须编写事件处理函数才能捕获事件,而内核为程序提供默认信号处理程序。

事件处理程序负责处理程序外部的事件,如键盘中断、鼠标单击等。事件处理程序将在特定插槽上连续轮询以使事件发生。所以在这里它可能会消耗 CPU 生命周期。

信号处理程序也用于两个进程之间的进程间通信。用户可以为处理特定信号的进程定义自己的信号处理程序。在信号处理机制中,我认为不会不必要地消耗任何 CPU 周期。

如果标题不正确,请纠正我。

【讨论】:

【参考方案2】:

我认为特定于来自内核的事件的信号处理程序,而事件处理程序是信号处理程序的一种更抽象的版本,包括“任何”类型的事件(点击事件、网络事件、信号等)

【讨论】:

以上是关于信号处理程序与事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

addeventlistener 与 removeeventlistener

浅谈JavaScript的事件(事件处理程序)

第133篇:事件处理与常用事件

深入理解DOM事件机制系列第二篇——事件处理程序

需要一个事件处理程序来处理动态添加的控件,该控件与另一个动态添加的控件交互

JavaScript学习——事件处理程序