2016-10-17 202 views
0

我搜索了bytesToWrite在文档中,我发现“对于缓冲设备,此函数返回等待写入的字节数。对于没有缓冲区的设备,这个函数返回0.“我不明白究竟是什么功能bytesToWrite()Qt

首先什么意味着缓冲设备。任何人都可以请向我解释这个函数到底做了什么以及我在哪里或如何使用它。

回答

2

许多IO设备都是缓冲,这意味着数据不是直接发送,但它是积累的时候有足够的数量发送批量。

这样做基本上是为了有更好的性能,因为发送数据通常有一些固定的开销(至少是系统调用的开销),在批量发送数据时会很好地分摊,但每次写入都必须支付如果不使用缓冲。

(注意,这里我们只谈论QIODevice缓冲区,通常有各种内核模式缓冲区和内部缓冲区的硬件设备本身)

bytesToWrite告诉你有多少东西是在QIODevice写入缓冲区,即您写入的多少个字节等于实际上是写入的(如给定要写入的操作系统)。

我从来没有真的必须使用该成员,但我认为它可能是有用的,例如,在生产者 - 消费者场景中(如果写入缓冲区低于某个值,则必须实际计算下一个要发送的数据块),以手动处理某些地方的缓冲区,甚至仅用于调试/日志记录目的。

+0

非常感谢你的回复我明白了 –