Как я могу обработать несколько сокетов в демоне Perl с использованием памяти большой емкости?

MRound не является функцией VBA. Измените MRound(seconds_working, 1) на WorksheetFunction.MRound(seconds_working, 1)

5
задан brian d foy 11 December 2008 в 18:54
поделиться

3 ответа

Вместо того, чтобы разветвиться существует два других подхода для обработки параллельных соединений. Или Вы используете потоки или подход опроса.

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

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

Пойдите исследование далее в области тех двух опций и решите, какой подходит Вам лучше всего.

Посмотрите, например: http://www.perlfect.com/articles/select.shtml

3
ответ дан 14 December 2019 в 09:03
поделиться

Если у Вас есть так много данных, интересно, почему Вы просто не используете базу данных?

2
ответ дан 14 December 2019 в 09:03
поделиться

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

Я был бы совет Вы для использования опроса использования подхода единственного процесса и возможно неблокирования IO также.

2
ответ дан 14 December 2019 в 09:03
поделиться
Другие вопросы по тегам:

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