callback机制
一个主线程管理其它线程时,不用轮询方法检查各个线程的状态,而是在子线程中出现某种状态时通知主线程,啊,有人要按下我了,啊,我的值到达100了,(术语叫触发了某种事件)这样主线程收到这些消息再根据消息类型去调用相应的方法.
一 个例子,我(主线程)坐车去北京,当车到北京时我要调用"下车"这个方法,如果不用回调用机制,我要不断地问driver,到了没有啊?如果我问超过三次 而那个driver力气又比我大的话,他肯定要打我,如果用回调用机制,就是用一个子线程(可以让driver承担这个角色)在那运行,当到的时候通知我 到了,我就调用"下车()",而不用过一会就问一次,这样我可以省下时间睡觉或和车上的美眉聊天.
callback机制的应用
对于c语言,一般都是用callback机制实现复用,这是一个普遍使用的复用机制。
声明一组函数指针接口,对于每种要支持的格式,分别实现之,
用这些函数实例化这样的接口,也就是dispatch table
然后在控制流程的某个地方,将某个dispatch table赋值给相应的table变量,相应的函数调用即为相应格式函数的调用。
比如编写字符设备驱动程序就是这样一个机制,程序员实现自己的open, read, write,close等函数,然后在系统中登记,当访问设备时系统就会自动调用用户自定义的函数