BLACKSITE
:
216.73.217.80
:
91.108.101.54 / wf-saudi.com
:
Linux fr-int-web1425.main-hosting.eu 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
:
/
opt
/
golang
/
1.22.0
/
test
/
chan
/
Upload File:
files >> //opt/golang/1.22.0/test/chan/select2.go
// run // Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Test that selects do not consume undue memory. package main import "runtime" func sender(c chan int, n int) { for i := 0; i < n; i++ { c <- 1 } } func receiver(c, dummy chan int, n int) { for i := 0; i < n; i++ { select { case <-c: // nothing case <-dummy: panic("dummy") } } } func main() { runtime.MemProfileRate = 0 c := make(chan int) dummy := make(chan int) // warm up go sender(c, 100000) receiver(c, dummy, 100000) runtime.GC() memstats := new(runtime.MemStats) runtime.ReadMemStats(memstats) alloc := memstats.Alloc // second time shouldn't increase footprint by much go sender(c, 100000) receiver(c, dummy, 100000) runtime.GC() runtime.ReadMemStats(memstats) // Be careful to avoid wraparound. if memstats.Alloc > alloc && memstats.Alloc-alloc > 1.1e5 { println("BUG: too much memory for 100,000 selects:", memstats.Alloc-alloc) } }