using System.Threading.Tasks;
public static async Task Main()
var monitor = new ReentrantAsyncLock.ReentrantAsyncLock();
await using (await monitor.LockAsync(default))
await using (await monitor.LockAsync(default))
await Task.WhenAll(Func1(42), Func2(42));
Console.WriteLine("Done");