Вращает ли HttpClient новый поток, даже если я сразу получаю результат возвращенного задания?

1

В моем приложении мне нравится пытаться быть последовательным и использовать HttpClient всякий раз, когда я могу. Однако иногда мне не нужны асинхронные свойства HttpClient, поэтому я просто получаю результат задачи, как только он возвращается, как показано в приведенном ниже коде.

public HttpResponseMessage httpPostWrapperMethod(string postBody, string url)
{
    HttpContent content = new StringContent(postBody, Encoding.UTF8, "application/json");

    HttpClient client = new HttpClient();

    return client.PostAsync(url, content).Result;
}

Мой вопрос состоит в следующем:

Приводит ли этот код к созданию нового потока в фоновом режиме при выполнении вызова?

а также

Если мои вызовы на эту другую услугу занимают около 500 мс, это заставит меня съесть слишком много потоков, когда сервис находится под производственной нагрузкой около 100 запросов в секунду?

Теги:
async-await
dotnet-httpclient

1 ответ

6
Лучший ответ

PostAsync не приводит к созданию потока, нет. Фактически, был ли код, который будет использоваться асинхронно, нить никогда не понадобится для выполнения этой работы. В вашем случае здесь у вас текущий поток сидит вокруг, ничего не делая, пока вы ждете окончания операции, так что это единственный поток, время которого потребляется/теряется при выполнении этой операции.

  • 0
    Этот ответ имеет смысл. Не могли бы вы прокомментировать вторую часть вопроса?
  • 0
    @tezromania Я не мог знать, будет ли код, который я не знаю, запускать на неизвестном оборудовании с неизвестной степенью серьезной нагрузки, проблемой или нет. Это то, что вам нужно сравнить себя, чтобы узнать.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню