【GiraKoo】C++多线程消息分发架构
【开源需求】C++多线程消息分发架构
项目【gi_messager】
- 
在多线程环境中,为每个线程提供独立的消息队列 MessageLoop。注:主线程默认自动创建消息队列。 
- 
MessageLoopCenter 提供 MessageLoop 的查询功能。能够获得指定 MessageLoop 的句柄。 - 同一个 MessageLoop 可以绑定多个模块 ID,便于多个模块共享同一个线程 MessageLoop。
 
- 
MessageLoop 提供线程安全的 postMessage,getMessage,peekMessage 方法。 - Message 结构中需要包含模块 ID,消息 ID,参数类型 MsgType,参数 MessageParam。
- 同时匹配模块 ID,消息 ID 时,能够获得相应的消息分发通知。
- MessageParam 默认提供基础类型 int, float, double, char, std::string,如果需要其他数据,需要自行实现 MsgParam 的方法。实现内存的创
 ,拷贝,释放等过程,保证数据线程安全和合理的内存释放。
 
- 
提供 ExhaustMessage 消息。阻塞式消息,将队列中全部消息分发完毕后,解除阻塞。 
- 
消息分发提供计时功能,超过100ms未返回的回调处理,将会显示警告日志。 
模块设计
- GiMessage:消息结构体。可以通过继承该类,实现自定义类型的消息分发。
- GiMessageObserver:消息观察者。可以接受到符合自身ID的消息。可以接受GiMessageLoop的状态通知。
- GiMessageLoop:消息循环主题。
代码范例
// TODO
计划中
代码托管
    
    本文来自博客园,作者:GiraKoo
    转载请注明原文链接:https://www.cnblogs.com/girakoo/p/18515949
    友情链接:GiraKoo | 博客园 | CSDN | 稀土掘金
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号