Netty требует отправки в том же потоке, что и select(), который задерживает отправку

Может ли Netty создать рабочий поток, который выполняет все отправки для группы сокетов? Похоже, что в настоящее время netty отправляет исходящие сообщения в очередь и пытается разбудить селектор, который затем копирует данные в неиспользуемый буфер и отправляет их. Это требует времени. Можно ли отправить напрямую из другого потока?


person R. Andrews    schedule 30.11.2011    source источник


Ответы (1)


Это невозможно. Нетти понятия не имеет, из какого потока пользователь вызовет write(). Следовательно, ему нужна очередь запросов на запись и выделенный цикл для выполнения операций записи. В противном случае приложение будет страдать от конкуренции в зависимости от того, как пользователь написал свое приложение. Под нагрузкой наличие выделенного цикла ввода-вывода и запуск протокола с конвейерной обработкой, по-видимому, обеспечивают более высокую пропускную способность.

person trustin    schedule 01.12.2011