1.ACE_TaskACE_Task框架
ACE_TaskACE_Task框架
ACE的ACE_Task框架提供了一种基于消息的编程模式,可以类比于Windows编程的消息循环。在ACE_Task中,消息类型被封装在一个称为ACE_Message_Block*的如何编译cas源码指针中,这个指针指向内存或对象。在创建ACE_Message_Block时,可以指定是ACE来管理内存还是自己管理。发送消息时,使用ACE_Task::putq来插入消息至消息队列,类似于Windows的SendMessage,但不立即返回,xshell源码解析因为消息队列有限容量,当满时,ACE_Task::putq会阻塞。取出消息时,使用ACE_Task::getq,tvbox源码配置与Windows的GetMessage类似,在队列无消息时会阻塞,通常在消息循环中处理消息。处理函数默认未提供,但可以类似WNDPROC在ACE_Task上编写回调函数,iptv系统 源码通常直接在消息循环中编写处理代码。
尽管ACE_Task的消息系统与Windows的消息系统相似,但它们存在较大差异。构建基于ACE_Task的消息系统通常需要:
1. **派生自ACE_Task的类**:指定同步模式,例如基于多线程的肥羊公式源码同步或不使用同步。
2. **重载svc方法**:作为处理线程的入口点,编写消息循环代码。
3. **创建唯一实例**:通过模板参数指定同步模式,使用ACE_Singleton确保唯一性,并通过MYTASK::instance方法获取实例。
4. **线程创建与激活**:在适当位置创建处理线程,并激活它们。
5. **发送消息**:在有消息发生时,将消息插入到消息队列中。
6. **使用实例**:在具体应用中,如Web服务器项目中,使用Request_Handler类处理HTTP请求,通过putq方法将请求插入队列,svc方法从队列中获取并处理请求,处理结果通过Response_Handler类写回客户端。
这样的步骤构建了基于ACE_Task的消息系统,与Windows的消息系统协同工作,实现了高效、灵活的消息处理机制。