на главнуюВсе эхи RU.UNIX.PROG
войти ?

Re: Эффективность менеджера памяти

От Vadim Guchenko (2:5020/400) к Valentin Nechayev

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


From: "Vadim Guchenko" <yhw@rambler-co.ru>

Hello, Valentin!
You wrote to Vadim Guchenko <yhw@rambler-co.ru> on Thu, 28 May 2009 13:39:14 +0000 (UTC):

VG>> Еще в writev() мне не нравятся две вещи. Во-первых то, что буфера передаются массивом,
VG>> а не связным списком. А во-вторых (и скорее всего это следствие первого) то, что этот
VG>> массив имеет максимальный размер, равный 1024 элементам. Получается, что если не нужна
VG>> атомарность записи, проще записать каждый буфер отдельным write(), как это и делает
VG>> stdio, чем по связному списку буферов строить массив для writev() и как-то
VG>> обрабатывать ситуацию, когда этих буферов больше 1024.
VN> Что-то я Вас не понимаю. Это как надо писать, чтобы в реальной программе получить более
VN> 1024 элементов списка? Если работать с передачей данных из одной стороны в другую, то
VN> этих элементов будет максимум 2. Hу ладно, 4. Если идёт переработка вроде перекодировки
VN> -
VN> вряд ли более 1. Зачем вообще рассматривать такие безумные ситуации?

Hапример, если библиотека ввода-вывода занимается буферизацией данных между приложением и
дескриптором ввода-вывода. Приложение может выводить данные в любых объемах без блокирования, но
сначала эти данные попадают в цепочку выходных буферов библиотеки, а позже записываются в
дескриптор по мере готовности последнего. В этом случае количество выходных буферов может быть
весьма большим. И если приложение попросит библиотеку записать их атомарно одним вызовом
writev() (например, если их надо отправить в одной датаграмме UDP), то можно нарваться на
превышение предела в 1024. Хотя в реальности даже при размере одного буфера в 1k тысяча таких
буферов составит 1M данных, а таких размеров датаграммы UDP не бывают.

--
Best regards, Vadim.


--- ifmail v.2.15dev5.4
* Origin: Demos online service (2:5020/400)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.UNIX.PROG?msgid=<1187335299@mid.individual.net>+ea7cf63d