func benchmarkUsing(b *testing.B, pool FramePool) { const numGoroutines = 1000 const maxHoldFrames = 1000 var gotFrames atomic.Uint64 var wg sync.WaitGroup for i := 0; i < numGoroutines; i++ { wg.Add(1) go func() { for { if gotFrames.Load() > uint64(b.N) { break } framesToHold := rand.Intn(maxHoldFrames) gotFrames.Add(uint64(framesToHold)) frames := make([]*Frame, framesToHold) for i := 0; i < framesToHold; i++ { frames[i] = pool.Get() } for i := 0; i < framesToHold; i++ { pool.Release(frames[i]) } } wg.Done() }() } wg.Wait() }