@mad_god

Какой верхний предел скорости асинхронного пинга C#?

Пытаюсь разобраться с async await на примере асинхронного пинга.

Сначала создаю 400 IP адресов, затем ставлю в очередь ожидания 400 асинхронных задач

Программа выполняется около минуты и мне кажется, что это не предел производительности, думаю, можно пинговать 400 адресов и за секунду, а не за минуту.

Похоже на то, что аwait ждёт результат каждого пинга по очереди, не переключаясь на те, которые уже завершились.
В общем, запутался.

https://pastebin.com/Yh3m3v2Y
  • Вопрос задан
  • 434 просмотра
Пригласить эксперта
Ответы на вопрос 1
@OwDafuq
Используйте Parallel.For вместо foreach, так минимум уменьшите выполнение 2 раза.
Вот пример и не удивляйтесь, что числа идут в разнобой.
J2beJP1tXEkYlm.png

И что-то я не совсем понял где у вас там асинхронность, вроде же все выполняется в GUI потоке, если нужен полный асинхрон, то лучше использовать Task.Run(() => { ... }); для каждого IP.

Ах да, если написать методу async, это не значит, что он асинхронный.

Чтобы он был полностью асинхронным нужна примерно такая конструкция:
YmEVqPns064qq2.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы