高水为用来定义消息队列什么时候满:最大盛放的字节数
内部消息队列不可能不受控制一直增大,否则内存爆了也不知道。所以要有水位控制,就行日志文件的循环读写一样。
源代码及其注释说明的很清楚:
/**
* 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));