高水为用来定义消息队列什么时候满:最大盛放的字节数
内部消息队列不可能不受控制一直增大,否则内存爆了也不知道。所以要有水位控制,就行日志文件的循环读写一样。
源代码及其注释说明的很清楚:
/**
* Get high watermark.
*/
virtual size_t high_water_mark (void);
/**
* Set the high watermark, which determines how many bytes can be
* stored in a queue before it's considered "full."
*/
virtual void high_water_mark (size_t hwm);
/**
* Get low watermark.
*/
virtual size_t low_water_mark (void);
/**
* Set the low watermark, which determines how many bytes must be in
* the queue before supplier threads are allowed to enqueue
* additional ACE_Message_Blocks.
*/
virtual void low_water_mark (size_t lwm);使用示例:
SendToServer consumer(NULL,NULL);
ProduceAudio producer(NULL,consumer.msg_queue());
producer.msg_queue()->high_water_mark((size_t)(1024*1024*2));
本文深入探讨了消息队列中的水位控制机制,包括高水位和低水位的设定及其作用,通过示例代码展示如何在实际应用中进行配置。
5791

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



