:: Не фоксом единым
Асинхронность 4
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
На habrahabr.ru (это перевод статьи) сказано:




Предпочитайте async/await вместо Task



Написание асинхронного кода, используя async/await, намного упрощает и сам процесс создания кода, и его чтение, нежели использование задач Task.

public Task<Data> GetDataAsync()
{
return MyWebService.FetchDataAsync()
.ContinueWith(t => new Data (t.Result));
}

public async Task<Data> GetDataAsync()
{
var result = await MyWebService.FetchDataAsync();
return new Data (result);
}

В терминах производительности, оба метода, представленные выше, имеют небольшие накладные расходы, но они несколько по-разному масштабируются при увеличении количества задач в них:
  • Task строит цепочку продолжений, которая увеличивается в соответствии с количеством задач, связанных последовательно, и состояние системы управляется через замыкания, найденные компилятором.
  • Async/await строит машину состояний, которая не использует дополнительных ресурсов при добавлении новых шагов.




    Как именно строится машина состояний - понятно. А вот что такое "цепочка продолжений"? О чём речь? Можно как то увидеть эту "цепочку"?
    Ratings: 0 negative/0 positive
  • Re: Асинхронность 4
    S-type
    Автор

    Сообщений: 2969
    Дата регистрации: 24.04.2004
    Попытаюсь переформулировать вопрос.

    Цитата:
    Task строит цепочку продолжений, которая увеличивается в соответствии с количеством задач, связанных последовательно,

    Цепочка образуется когда в ContinueWith передаётся делегат с другой задачей. Поскольку эта задача (в свою очередь) то же может содержать ContinueWith (в которую то же передаётся делегат ещё с одной задачей), цепочка увеличивается. Так?

    Цитата:
    и состояние системы управляется через замыкания, найденные компилятором.

    То, что лямбда производит захват переменных, это понятно. В данное случае под словом "система" подразумевается программа. Так?
    Ratings: 0 negative/0 positive


    Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

    On-line: 6 (Гостей: 6)

    © 2000-2024 Fox Club 
    Яндекс.Метрика