У меня есть компонент, который выполняет следующие действия:
- Принять одно сообщение по сети, используя пользовательский протокол, построенный по tcp / ip из источника A
- Обработка сообщения (занимает примерно500 микросекунд)
- Отправляет сообщение по сети в другой компонент, скажем, в конечную точку B, используя пользовательский протокол, построенный по протоколу tcp / ip
- Получает ACK от конечной точки B
- ОтправляетПодтвердите источник A
Промойте и повторите 5 вышеуказанных шагов.Важно понимать, что источник A не будет отправлять второе сообщение, пока не получит ACK для предыдущего сообщения.
Как вы можете видеть, процесс бездействует в следующих случаях
Время, когда источник A отправит компоненту одно сообщение по сети.И источник A, и компонент находятся в одной VLAN, Ethernet.
Время, в течение которого компонент отправляет обработанное сообщение в конечную точку B. Конечная точка B также находится в той же VLAN, подключенной через Ethernet.
Время, в течение которого компонент получает ACK от конечной точки B.
Время, в течение которого компонент отправляет ACK в источник A.
Выше было описание ответственности компонента.С точки зрения развертывания я планирую создать 100 таких компонентов на одном 8-ядерном компьютере.Ничто другое не будет работать на машине.И конечная точка B, и источник A находятся на разных компьютерах, и все находится в одном и том же Ethernet.Мой вопрос заключается в том, что приведенная выше модель порождения большого количества компонентов, которые проводят большую часть своего времени в ожидании ввода-вывода в сети, вызывает перегрузку контекста?Если да, то почему?