-
AsyncKeyedLock
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.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
AsyncUtilities
A collection of somewhat useful utilities and extension methods for async programming
I had benchmarked it IIRC. You're free to fork and try it that way; I already created a benchmarking app at https://github.com/MarkCiliaVincenti/AsyncKeyedLockBenchmarks
The library is called AsyncKeyedLock available on NuGet and GitHub. Moreover, benchmarks show it considerably outperforming other libraries.
I wrote a very similar package (https://github.com/amoerie/keyed-semaphores) because I simply didn't want to keep reimplementing this in every project I work in.
Shameless plug: My AsyncUtilities library with its StripedAsyncLock plus a general striping implementation allowing to stripe any kind of lock.