using System;
using System.Linq;
using System.Threading.Tasks;
public class Program
{
static int counter = 0;
static void Main()
var ts = Enumerable.Range(0,100).Select(x => Foo()).ToArray();
Task.WhenAll(ts).Wait();
counter.Dump();
}
static Task Foo() => Task.Run(()=>
for(int i = 0; i < 100000; i++)
Set();
});
static object locker = new object();
static void Set()
lock(locker)
counter++;