From cafa869fea3bef8c0c2ea784a1d6199610b7578c Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Wed, 26 Feb 2025 13:18:40 +0300 Subject: [PATCH] [#8] limiting: Make SemaphoreLimiter.Acquire() zero-alloc Previously, `Acquire` on exising key did 1 allocation because `func() { sem.Release() }` was a closure capturing different variables. Signed-off-by: Evgenii Stratonikov --- limiting/limiter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/limiting/limiter.go b/limiting/limiter.go index 4d29a71..0f550f8 100644 --- a/limiting/limiter.go +++ b/limiting/limiter.go @@ -69,7 +69,7 @@ func (lr *SemaphoreLimiter) Acquire(key string) (ReleaseFunc, bool) { } if ok := sem.Acquire(); ok { - return func() { sem.Release() }, true + return sem.Release, true } return nil, false } -- 2.45.3