Сколько асинхронных ядер я должен использовать? - PullRequest
2 голосов
/ 10 апреля 2019

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

Моя программа прослушивает массив портов, а опрос и перемещение данных в очередь происходит на одном асинхронном ядре (A). Затем у меня есть другое асинхронное ядро ​​(B), которое берет данные из этой очереди и обрабатывает их. Затем у меня есть другое асинхронное ядро, которое выполняет фоновые подпрограммы (C). Все А, В и С происходят в разных потоках.

Предположим, что существует огромная нагрузка потоковой передачи данных, и ядро ​​B становится перегруженным ожидающей работой (это фактически означало бы «задержку» для конечного пользователя). Каковы общие способы обнаружения этой перегрузки, и следует ли обнаруживать перегрузку, следует ли мне использовать другое асинхронное ядро ​​(D), соединенное с B?

...