В чем разница между задачей и потоком?

В C # 4.0 у нас есть Task в пространстве имен System.Threading.Tasks . В чем истинная разница между Thread и Task . Я сделал пример программы (справку взят из MSDN) ради собственного обучения с

Parallel.Invoke 
Parallel.For 
Parallel.ForEach 

, но у меня много сомнений, поскольку идея не так ясна.

Сначала я искал в Stackoverflow вопросы аналогичного типа, но, возможно, с этим заголовком я не смог получить то же самое. Если кто-то знает о подобном вопросе, который был размещен здесь ранее, просьба указать ссылку на ссылку.

366
задан hippietrail 29 August 2019 в 00:36
поделиться

1 ответ

Задача использует поток для выполнения асинхронный. Задача может рассматриваться как удобный и простой способ выполнить что-то асинхронно и параллельно.

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

можно выполнить то же с потоком, как Вы можете с задачей.

Поток

int result = 0;
Thread thread = new System.Threading.Thread(() => { 
    result = 1; 
});
thread.Start();
thread.Join();
Console.WriteLine(result); //is 1

Задача

int result = await Task.Run(() => {
    return 1; 
});
Console.WriteLine(result); //is 1

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

1
ответ дан 23 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

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