По MSDN:Task.WhenAll() - создает ли новый поток?
Создает задачу, которая будет завершена, когда все предоставленные задачи выполнили.
Когда вызывается Task.WhenAll(), он создает задачу, но обязательно ли это означает, что он создает новый поток для выполнения этой задачи? Например, сколько потоков создано в этом консольном приложении ниже?
class Program
{
static void Main(string[] args)
{
RunAsync();
Console.ReadKey();
}
public static async Task RunAsync()
{
Stopwatch sw = new Stopwatch();
sw.Start();
Task<string> google = GetString("http://www.google.com");
Task<string> microsoft = GetString("http://www.microsoft.com");
Task<string> lifehacker = GetString("http://www.lifehacker.com");
Task<string> engadget = GetString("http://www.engadget.com");
await Task.WhenAll(google, microsoft, lifehacker, engadget);
sw.Stop();
Console.WriteLine("Time elapsed: " + sw.Elapsed.TotalSeconds);
}
public static async Task<string> GetString(string url)
{
using (var client = new HttpClient())
{
return await client.GetStringAsync(url);
}
}
}
Этот связанный пост действительно приятный. Ты сделал меня верующим;) – Kris