using System.Threading.Tasks;
public static void Main()
Console.WriteLine("=====");
var started = DateTime.UtcNow;
Console.WriteLine("a run {0}",started.Ticks);
var started = DateTime.UtcNow;
Console.WriteLine("b run {0}",started.Ticks);
Task.WaitAll(new Task[]{a,b});
public static void Better()
Console.WriteLine("prepare");
var readyToRace = new CountdownEvent(2);
var fireTheGun = new ManualResetEvent(false);
var started = DateTime.UtcNow;
Console.WriteLine("a run {0}",started.Ticks);
var started = DateTime.UtcNow;
Console.WriteLine("b run {0}",started.Ticks);
Console.WriteLine("ready");
Task.WaitAll(new Task[]{a,b});