我不明白函数bytesToWrite()Qt究竟是什么

时间:2016-10-17 05:23:23

标签: qt qtcpsocket

我搜索了doc中的bytesToWrite以及我发现的内容"对于缓冲设备,此函数返回等待写入的字节数。对于没有缓冲区的设备,此函数返回0。"

首先是什么意思是缓冲设备。任何人都可以向我解释这个功能究竟是做什么的,我在哪里或如何使用它。

1 个答案:

答案 0 :(得分:2)

许多IO设备缓冲,这意味着数据不会立即发送,但是当数量足够时,它会被累积发送。

这主要是为了获得更好的性能,因为发送数据通常具有一些固定的开销(至少是系统调用开销),在批量发送数据时可以很好地分摊,但是如果每次写入都需要支付。不会使用缓冲。

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

bytesToWrite告诉你QIODevice写缓冲区中有多少东西,即你写的等待实际写入的字节数(如,给予要编写的操作系统)。

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