一个简单的Client Base框架

        开源代码Chromium可以给我们客户端的架构提供很多参考与借鉴,本文即是一个基于Chromium的mssage_loop事件机制与task投递流程,改造的一个更加简单易用的基本框架。

        其中EventPumpDefault作为通用事件框架,封装到对应的一个RunLoopThread中,多个RunLoopThread组成线程池。线程按逻辑功能分为:主线程、通用线程池、专用线程。

一个简单的Client Base框架_第1张图片

        对于一个跨平台的聊天客户端来讲,可粗分为UI层、Kernel层。其中UI层实现由不同平台来决定,如android基于java,ios基于oc,负责处理数据展示;Kernel层也即sdk层,负责对接后台,做数据计算及持久化,可以采用性能较好的语言,如C++。跨语言的调用可以采用djinni的成熟方案。

        具体到如何应用上面这个框架:UI层在UI线程刷新展示,调用Kernel层接口获取数据,如果仅是拿缓存,可直接同步返回;如果是需要做异步处理等复杂操作,则需要切到Kernel层主线程。对Kernel层来讲,主线程只有一个,耗时类的操作:如压缩、协议解码,应该再投递到线程池去处理,避免阻塞其它来自UI层的调用。

你可能感兴趣的:(服务器,运维)