Task可以视为更高一个级别的线程对象,各个Task之间的同学也就是线程之间的通讯,在ACE中,采用了消息队列的方式进行处理。每一个Task封装一个ACE_Message_Queue,对于这个消息队列使用putq将消息压入队列,采用getq将消息出列,获取消息的顺序与压入消息的顺序相同。
下面的代码使用了消息队列在两个Task之间进行通讯,GenerateData任务生成数据,每间隔1秒钟会将全局变量g_nCounter增1,并将其压入队列。PrintTask任务从消息队列中获取消息,并将消息显示到输出设备上。
二者之间的通讯是通过PrintTask的消息队列实现。