我搜索了doc中的bytesToWrite
以及我发现的内容"对于缓冲设备,此函数返回等待写入的字节数。对于没有缓冲区的设备,此函数返回0。"
首先是什么意思是缓冲设备。任何人都可以向我解释这个功能究竟是做什么的,我在哪里或如何使用它。
答案 0 :(得分:2)
许多IO设备缓冲,这意味着数据不会立即发送,但是当数量足够时,它会被累积发送。
这主要是为了获得更好的性能,因为发送数据通常具有一些固定的开销(至少是系统调用开销),在批量发送数据时可以很好地分摊,但是如果每次写入都需要支付。不会使用缓冲。
(请注意,这里我们只讨论QIODevice
个缓冲区,通常还有还各种内核模式缓冲区和硬件设备本身内部的缓冲区)
bytesToWrite
告诉你QIODevice
写缓冲区中有多少东西,即你写的等待实际写入的字节数(如,给予要编写的操作系统)。
我从来没有真正使用过那个成员,但我想它可能是有用的,例如在生产者 - 消费者场景中(=如果写入缓冲区低于某些东西,则必须实际计算要发送的下一个数据块),在某些地方手动处理缓冲,甚至仅用于调试/记录目的。 / p>