最近在一次面试中,他们问我区分信号处理程序和事件处理程序的差异。我从未在Linux中遇到过事件处理程序,但是通过Google搜索,我发现Windows中存在事件处理程序。
我只想了解更多关于这个问题的信息。欢迎提供任何信息。
我认为信号处理程序是针对来自内核的事件而设计的,而事件处理程序则是信号处理程序的更抽象版本,并包括“任何”类型的事件(点击事件、网络事件、信号等)。
我发现用户必须编写事件处理程序函数才能捕获事件,而内核为程序提供默认信号处理程序。
事件处理程序负责处理程序外部的事件,如键盘中断、鼠标单击等。事件处理程序将不断轮询特定插槽以等待事件发生。因此,在这里可能会消耗CPU生命周期。
信号处理程序也用于两个进程之间的进程间通信。用户可以为进程定义自己的信号处理程序以处理特定信号。在信号处理机制中,我认为不会不必要地消耗任何CPU周期。
如果我走错了,请纠正我。