计算机如何实现回调?

计算机如何实现回调?

我已经知道回调的一般用法了。首先,我注册一个“回调函数”,当某些事件发生时,该函数将被触发(被执行)。让我困惑的是我如何知道该事件是否发生?我能得到的解决方案是轮询。是否有更好的方法来检查事件是否在 O(n) 时间内发生?

好吧,也许上面的问题太抽象了。更现实的描述是 epoll_wait() 是否避免使用 O(n) 时间来检查文件描述符是否就绪?

如果是的话,它是如何做到的?是否存在与轮询本质上不同的回调机制?

答案1

在典型的事件驱动接口中,回调函数不会轮询以等待事件。它只是让事件管理者知道。在一个简单的实现中,一个对象将有一组与其关联的事件,并且该对象的每个事件将有一个函数指针(或其列表),当处理该事件时将调用该函数指针。

相关内容