using System.Threading.Tasks;
static class ReentrantAsyncLockExtensions
public static async Task LockAsync(
this ReentrantAsyncLock.ReentrantAsyncLock asyncLock,
await using var _ = await asyncLock.LockAsync(token);
var asyncLock = new ReentrantAsyncLock.ReentrantAsyncLock();
var mutualExclusionTest = 0;
if (mutualExclusionTest != 0)
Console.WriteLine($"There was a mutual exclusion violation on try {i:N0}");
if (i % 100_000 == 0 && i > 0)
Console.WriteLine($"So far so good after try {i:N0}");
asyncLock.LockAsync(async () =>
SynchronizationContext.SetSynchronizationContext(null);
var reenterTask = asyncLock.LockAsync(
return Task.CompletedTask;
}, CancellationToken.None);