Task可以视为更高一个级别的线程对象,各个Task之间的同学也就是线程之间的通讯,在ACE中,采用了消息队列的方式进行处理。每一个Task封装一个ACE_Message_Queue,对于这个消息队列使用putq将消息压入队列,采用getq将消息出列,获取消息的顺序与压入消息的顺序相同。
下面的代码使用了消息队列在两个Task之间进行通讯,GenerateData任务生成数据,每间隔1秒钟会将全局变量g_nCounter增1,并将其压入队列。PrintTask任务从消息队列中获取消息,并将消息显示到输出设备上。
二者之间的通讯是通过PrintTask的消息队列实现。
本文介绍了一个基于ACE框架的任务通信示例。通过GenerateData和PrintTask两个类的实现,展示了如何利用ACE_Message_Queue在不同任务间传递数据。GenerateData任务负责生成并更新全局变量,每秒将其放入消息队列;而PrintTask任务则从队列中获取这些数据并输出。
1421

被折叠的 条评论
为什么被折叠?



