avbot 里的回调

Posted on May 25, 2014

asio 这样的库,每次发起一个操作,就带一个回调.回调告诉你,神马时候操作完成了,完成的咋样.

在所有被主动调用的接口处, avbot 基本上都遵循了 asio 的这一设计准则:提供回调完成事件通知.

但是,还有另一种回调:这个回调并不是因为你主动调用了某个接口,而是因为,这是框架的一部分.

你不用调用框架,框架会来调用你.

在被框架调用的地方,如果阻塞了,势必会导致框架内部的执行流被整个阻塞.比如说,如果设定一个 “验证码回调”,框架登录QQ发现需要验证码的时候就调用.那么,执行解验证码这个操作如果费时(这 肯定费时啊,等待用户从控制台输入嘛)会导致整个avbot的内部循环被阻塞. 

这明显不是我想要的结果.

这也是因此我极力避免框架式设计. 但是,框架式设计有时候又是无可奈何的最简单的做法.

那么,为何不让我们的回调接受一个框架传来的 Handler ?

是的! 这样框架就无需要求回调一定是非阻塞的了!

Comments