一,高低水位标
high water mark
low water mark
注意不能把 low water mark 设置得过小,原因是
enqueue时 not_empty_cond_.signal(),dequeue时如果已经低于了low water mark时才会 not_full_cond_.signal()。
意思就是dequeue时,如果处于 [low water mark,high water mark]之间,阻塞的enqueue.wait()不会得到继续收消息的信号,只有小于以后才会继续接收消息。
is_full()是根据当前是否大于等于high water mark来判断,如果full会wait。