An asynchronous .NET Standard 2.0 library that allows you to lock based on a key (keyed semaphores), limiting concurrent threads sharing the same key to a specified number, with optional pooling for reducing memory allocations.
Exposing constructor for AsyncKeyedLockTimeoutReleaser.
New methods for conditional locking enabled also for StripedAsyncKeyedLocker and AsyncNonKeyedLocker.
New methods for conditional locking which can be used in recursive methods as a workaround for reentrancy. If the condition is false, it enters without locking.
Big (~25%) performance improvement when using pooled locking.
Performance improvement on AsyncNonKeyedLocker.
Performance improvement on AsyncNonKeyedLocker.
Added a simple, non-keyed async lock through AsyncNonKeyedLocker.
Cleaning pooling and aggressively inlining locking methods.
Minor optimizations.
Allowed optional ConfigureAwaitOptions on .NET 8.0 or greater.