CSharp · Console
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
var sw = Stopwatch.StartNew();
var f1 = Foo("f1");
var f2 = Foo("f2");
Task.WhenAll(f1,f2).Wait();
Console.WriteLine($"2 таски * 5 циклов * 250мс на цикл = {sw.ElapsedMilliseconds}мс");
sw = Stopwatch.StartNew();
var b1 = Bar("b1");
var b2 = Bar("b2");
Task.WhenAll(b1,b2).Wait();
Console.WriteLine($"2 таски * 5 циклов * 250мс на цикл = {sw.ElapsedMilliseconds}мс");
}
static async Task Foo(string id){
for(int i=0; i< 5; i++){
await Task.Delay(250);
(id + ". Thread:" + Thread.CurrentThread.ManagedThreadId).Dump();
}
}
static Task Bar(string id){
for(int i=0; i< 5; i++){
Thread.Sleep(250);
(id + ". Thread:" + Thread.CurrentThread.ManagedThreadId).Dump();
}
return Task.CompletedTask;
}
}