как делают скрученный/торнадо, и так далее работают

Я понимаю, что они работают в некотором роде отличные от создания потока на пользователя. Как точно, который работает?

('Неблокирование' имеет некоторое отношение к нему?)

5
задан Aaron Yodaiken 18 June 2010 в 06:34
поделиться

1 ответ

Из документации Twisted:

Реактор является ядром цикла событий в Twisted - цикла, который управляет приложениями, использующими Twisted. Цикл событий - это конструкция программирования, которая ожидает и отправляет события или сообщения в программе. Он работает путем вызова некоторого внутреннего или внешнего "поставщика событий", который обычно блокирует выполнение события, а затем вызывает соответствующий обработчик события ("отправляет событие"). Реактор предоставляет базовые интерфейсы для ряда служб, включая сетевые коммуникации, потоки и диспетчеризацию событий.

См. также http://en.wikipedia.org/wiki/Event_loop

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

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

6
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

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