Может ли Netty создать рабочий поток, который выполняет все отправки для группы сокетов? Похоже, что в настоящее время netty отправляет исходящие сообщения в очередь и пытается разбудить селектор, который затем копирует данные в неиспользуемый буфер и отправляет их. Это требует времени. Можно ли отправить напрямую из другого потока?
Netty требует отправки в том же потоке, что и select(), который задерживает отправку
Ответы (1)
Это невозможно. Нетти понятия не имеет, из какого потока пользователь вызовет write(). Следовательно, ему нужна очередь запросов на запись и выделенный цикл для выполнения операций записи. В противном случае приложение будет страдать от конкуренции в зависимости от того, как пользователь написал свое приложение. Под нагрузкой наличие выделенного цикла ввода-вывода и запуск протокола с конвейерной обработкой, по-видимому, обеспечивают более высокую пропускную способность.
person
trustin
schedule
01.12.2011