peakzhang 发表于 2008-1-7 20:27:55

请教ACE_Message_Queue中低水位的问题

ACE_Message_Queue中的缺省低水位为什么和高水位相等(都是16K)? 不是说如果队列中的数据量小于低水位的时候,get操作就可能失败么,岂不是要求队列中最少有16K的数据?http://localhost/bbs/Skins/default/topicface/face11.gif

peakzhang 发表于 2008-1-7 20:28:05

说说我的理解。这个水标是流量控制。意思是超过或者低于这个值,才会进行流量控制。
比如,低于16k,可以任意推入队列,高于16k,推入会依赖你的规定阻塞或者延时返回。
get不会失败,因为里面有数据呀。
之所以保持一致,是因为:如果他们两个有差值,比如低水位8K,高水位16K,会产生的结果是停滞一段时间或者返回错误,详见c++网络编程第二卷,P159

peakzhang 发表于 2008-1-7 20:28:19

我认为是这样的,如果高低水位不等,如低水位8K,高水位16K,则队列满了以后,入队会失败或者阻塞,直到队列中的数据,低于低水位才能继续入队。这样会造成“振荡”或延时的效果。
页: [1]
查看完整版本: 请教ACE_Message_Queue中低水位的问题