В идеальной асинхронной программе каждый цикл обработки событий всегда занят нулевым временем простоя между получением данных и выполнением опроса-> действие-выполнение.
Моя программа прослушивает массив портов, а опрос и перемещение данных в очередь происходит на одном асинхронном ядре (A). Затем у меня есть другое асинхронное ядро (B), которое берет данные из этой очереди и обрабатывает их. Затем у меня есть другое асинхронное ядро, которое выполняет фоновые подпрограммы (C). Все А, В и С происходят в разных потоках.
Предположим, что существует огромная нагрузка потоковой передачи данных, и ядро B становится перегруженным ожидающей работой (это фактически означало бы «задержку» для конечного пользователя). Каковы общие способы обнаружения этой перегрузки, и следует ли обнаруживать перегрузку, следует ли мне использовать другое асинхронное ядро (D), соединенное с B?