Как лучше всего обработать большие буферы в многоуровневом стеке протоколов?

Я установил программу, названную alacarte, и добавил мою программу там. После перезапуска панель инструментов человечности видела новое приложение. Я могу теперь выполнить форму df эти 12,04 тире.

7
задан JeffV 31 August 2009 в 00:40
поделиться

3 ответа

Вы можете избежать копий, если каждый уровень запрашивает пустой буфер у следующего более низкого уровня, а не выделяет его сам:

  • Уровень приложения запрашивает буфер
7
ответ дан 6 December 2019 в 23:11
поделиться

Создайте структуру буфера. Зная максимальный размер нижнего уровня, выделите достаточно буферного пространства на верхнем уровне, чтобы добавлять каждый последующий слой вниз по стеку. Каждый уровень перемещает указатель в структуре буфера по мере добавления слоя.

На нижнем уровне начало буфера записывается в указателе в структуре буфера. Отправляемые данные находятся в непрерывном буфере. Никакие данные не копировались на каждом слое.

Двигаясь снизу вверх, вы отслаиваете слои внутри буферной структуры.

4
ответ дан 6 December 2019 в 23:11
поделиться

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

Я предполагаю, что вы приводите пример API для буфер передачи.

Я думаю, что вы можете сохранить тот же API, если добавите ограничение, что любому, кто вызывает этот API, не разрешается использовать или касаться этого буфера снова, пока они не получат последующее уведомление о завершении операции передачи: так что вызов API неявно передает право собственности на этот буфер.

0
ответ дан 6 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: