前几个章节一直有提到过事件循环机制,但是都是大致使用了一下,没有详细介绍事件循环机制。实际上VS内部大量使用EventLoop,基于他可以很随意的跨组件通信。而且事件循环本身就是MQ的模型,扩展性很强,同时消息发送方接收方都是可拆卸的,耦合性很低。

设计EventLoop之前,考虑过guava的eventbus,但是我发现看不懂。所以一怒之下从头开始写。EventLoop就是维护了一个队列,然后有一个线程循环取出队列里面的event对象,选择event的处理器,回调event每个处理器。所以EventLoop允许发送延时事件,这时因为他本身有一个监听线程的。同时,EventLoop只有一个线程工作,事件处理器逻辑中不允许进行耗时操作,如果确实需要,考虑使用事件投递本身线程,投递同步事件。或者异步事件中,启动新线程处理耗时逻辑。

results matching ""

    No results matching ""