Skip to content

Instantly share code, notes, and snippets.

View verdie-g's full-sized avatar
🦕
‌‌

Grégoire verdie-g

🦕
‌‌
  • Paris, France
  • 15:41 (UTC +01:00)
View GitHub Profile
@verdie-g
verdie-g / TokenBucketRateLimiterSlim.cs
Created February 17, 2024 00:09
Lock-free implementation of the token bucket algorithm in C# (port of https://github.com/rigtorp/TokenBucket)
/// <summary>
/// Rate limiter that replenishes tokens periodically.
/// </summary>
/// <remarks>
/// This is a simpler and lock-free implementation of System.Threading.RateLimiting.TokenBucketRateLimiter.
/// </remarks>
/// <example>
/// <code lang='C#'>// Throttle logs to 10 by minute.
/// TokenBucketRateLimiterSlim rateLimiter = new(10, TimeSpan.FromMinutes(1));
/// if (rateLimiter.AttemptAcquire())