Доброго времени суток, имеется собственный веб сервер соединённый с бд, а так же клиент к нему.
Результаты с веб-сервера получаю посредсвом Get запроса.
С клиента отправляется запрос используя код ниже:
public void GetInfo()
{
while(true)
{
using (var request = new HttpRequest()) // Leaf.xNet as analog HttpClient
{
try
{
var response = request.Get("https://site.org/show").ToString();
Console.WriteLine($"{response}");
}
catch (Exception ex)
{
ex = null;
}
}
}
}
А затем вызывается как :
int maxThreads = 200;
for(int i = 0; i<maxThreads,i++)
{
new Thread(()=>GetInfo()).Start();
}
И в результате в "консоль" получаю данные вида "request number # info XXXX".
Вопрос состоит из того, как всё это дело максимально ускорить? Не считая то что нужно использовать ihttpclientfactory из за трудоёмкости создания http client'a (xNet под катом использует httpclientfactory).
Использовать таски - не вариант, если к request.Get("
https://site.org/show").ToString(); добавить await Task.Run(()=>{x}); это будет правильнее, но скорость получения данных с сервера резко упадёт, на практическом опыте, создание новых потоков которые внутри выполняют запросы - быстрее чем async, быстрее чем при использовании ThreadPool.