2016-10-17 11 views
0

Я искал bytesToWrite в документе и что то, что я нашел «Для буферизованных устройств эта функция возвращает количество байтов, ожидающих записи. Для устройств без буфера , эта функция возвращает 0. "Я не понимаю, что именно делает функция bytesToWrite() Qt

Прежде всего, что означает буферизованные устройства. И может ли кто-нибудь объяснить мне, что именно делает эта функция, и где и как я могу ее использовать.

ответ

2

Многие устройства ввода-вывода буферизированы, что означает, что данные не отправляются сразу, но они аккумулируются для отправки навалом, когда имеется достаточное количество.

Это достигается, по существу, с большей производительностью, так как при отправке данных, как правило, исправлены некоторые накладные расходы (по крайней мере, накладные расходы на сборку), которые хорошо амортизируются при отправке данных навалом, но их придется платить за каждую запись если буферизация не будет использоваться.

(обратите внимание, что здесь мы говорим только о QIODevice буферов, как правило, есть также все виды режима ядра буферов и буферов внутренних для самих устройств)

bytesToWrite говорит вам, сколько материал в QIODevice буфер записи, т. Е. Сколько байтов вы написали, которые ожидают быть на самом деле написано (как указано, дано ОС для записи).

Мне никогда не приходилось использовать этот элемент, но я полагаю, что это может быть полезно, например. в сценарии производителя-потребителя (= если буфер записи меньше, чем что-то, тогда вы должны фактически рассчитать следующий фрагмент отправляемых данных), чтобы вручную обрабатывать буферизацию в некоторых местах или даже просто для целей отладки/ведения журнала.

+0

Большое вам спасибо за ваш ответ Я получил его –

 Смежные вопросы

  • Нет связанных вопросов^_^