anancds / document

MIT License
1 stars 0 forks source link

libevent的watermarks理解 #132

Open anancds opened 3 years ago

anancds commented 3 years ago

watermarks:   Read low-water mark:当read buffer的量大于等于这么多时,调用callback。默认是0,即一有数据就回调。   Read high-water mark:当read buffer的量大于等于这么多时,停止read,直到buffer里面的数据低于这个值为止,重新开始read。默认是无限。   Write low-water mark:当write buffer的量小于等于这么多时,调用回调。默认是0   Write high-water mark:bufferevent未直接使用这个值。

anancds commented 3 years ago

当输入缓冲区的数据大于或等于输入低水位时,读取回调就会被调用。默认情况下,输入低水位的值是 0,也就是说,只要 socket 变得可读,就会调用读取回调。 当输出缓冲区的数据小于或等于输出低水位时,写入回调就会被调用。默认情况下,输出低水位的值是 0,也就是说,只有当输出缓冲区的数据都发送完了,才会调用写入回调。因此,默认情况下的写入回调也可以理解成为 write complete callback

anancds commented 3 years ago

除此之外,我们还可以设置bufferevent的输入高水位,那么什么是输入高水位呢?默认情况下,bufferevent的输入缓冲区是可以无限增长的,但有时候我们想限制一个 TCP 连接的流量,这时候就可以设置一个输入高水位,这样就能限制输入缓冲区的大小了,保证它不会超过输入高水位。