这两天看gevent相关内容,突然涉及到callback相关的问题,就觉得有必要深究一下其中的机制原理。网上找了好久,发现一篇http://www.zhihu.com/question/20748514
1 用户的输入设备发送信息给 device driver。 2 Device driver 将信息发给某些 manager 程序。比如说,大多数鼠标和键盘动作都会传给 window manager。 3 Window manager 会把这些动作翻译成 event,通过 IPC 机制传给 app。 4 App 的 UI framework 会把这些通过 IPC 接受到的 event 放到 event-queue 中。 5 你自己,或者 UI framework 会运行一个 loop。这个 loop 不停的去 event-queue 中取 event。 如果取到,event-loop 会调用相应的 callback。
另起一线程去轮询事件状态是关键,如果事件发生,会立马调用回调函数,执行。
百度百科定义如下:
⑴定义一个回调函数; ⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者; ⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理
========
又发现一个好东西http://www.laruence.com/2009/09/23/1089.html这个算是解开了我许久的困惑!