本文主要是介绍ACE生产消费者队列就是消息队列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ACE—Message一 Queue
在Windows和Linux的config文件中都没有定义
"ACE_HAS_TIMED_MESSAGE_BLOCKS"这个宏,所以 msg_deadline_time 和 msg_execution_time都不起任何作用.
ACE_Message_Queue_Factory这个工•提供三个静态函数分别用来创建静态消息队列 和两种类型的动态消息队列。静态消息队列的消息也支持优先级,但是消息的优先级是静态 的,不需要通过动态计算而来。水位用来控制消息队列中数据的大小,高水位 (high_water_mark)用于控制消息队列的上限,它用于控制生产者往里面放数据的量, 如果消息队列中数据S:已经达到高水位,而用使用了锁,既使
''ACE_Message_Queue_Factory<ACE_MT_SYNCH>: :create_static_message_q
ueue();〃创建消息队列,那么生产者将被阻塞。高水位很容易理解,但是低水位是用来做
什么的呢? 只要消息队列中还有数据消费者就不会被阻塞的,而当数据量超过高水位时,生产者会被阻 塞,既然会被阻塞,那么它肯定需要被唤醒,那么什么时候由谁来唤醒生产者呢?这就是低 水位的作用,消费者一直消费数据,当数据低于低水位时它就唤醒生产者。 下而的代码很好的展示了静态消息队列的使用。
#include "ace/Message—Queue.h"
#include "ace/Get_Opt.h"
#include "ace/OS.h"
#include <ace/Thread_Manager.h>
#include <ace/Synch.h>
//消息队列指针
ACE_Message_Queue<ACE
这篇关于ACE生产消费者队列就是消息队列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!