<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">9 февраля 2015 г., 13:06 пользователь Daniel Podolsky <span dir="ltr"><<a href="mailto:onokonem@gmail.com" target="_blank">onokonem@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> Добавлять воркеров я уже не могу - их 50 штук на сервере выполняется, и<br>
> больше уже памяти нет.<br>
</span>Хочу подробностей! Что это за воркеры такие злые? Почему асинхронному<br>
приложению эта память не понадобится? Может, и синхронному не нужна?<br></blockquote><div><br></div><div>Один асинхронный процесс может ждать сразу несколько запросов одновременно. В процессе ожидания делая полезную работу.<br></div><div>Один синхронный процесс может ждать только один запрос одновременно.<br><br><br></div><div>Например:<br></div><div>Чтобы получить данные с 50 урлов для синхронного подхода нужно создать 50 воркеров и внутри каждого отправить запрос на получение урла и ждать данных.<br></div><div>Для асинхронного подхода достаточно в одном воркере ( или по кол ядер на сервере ) отправить сразу 50 запросов и ждать данных, в процессе ожидания данных обрабатывать уже пришедшие данные.<br></div><div>Асинхронный подход выигрывает там, где есть сетевые задержки. Те где синхронный код ждет ответа, асинхронный код работает.<br><br></div><div>Те, образно говоря, чтобы на одно и то же время получить данные с 50 урлов нужно 1 асинхронный процесс на 1 ядро и 2-3 синхронных процесса.<br><br></div><div>Вот здесь и происходит экономия памяти. За счет максимального использования процессора.<br><br><br></div><div>З.Ы. интересная дискуссия. Тоже захотелось поучаствовать )<br></div><div><br></div></div>-- <br><div class="gmail_signature">С уважением,<br>Иван</div>
</div></div>