// run // Copyright 2015 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. package main type T struct { a, b, c int } func usestack() { usestack1(32) } func usestack1(d int) byte { if d == 0 { return 0 } var b [1024]byte usestack1(d - 1) return b[3] } const n = 100000 func main() { c := make(chan interface{}) done := make(chan bool) for i := 0; i < 10; i++ { go func() { for j := 0; j < n; j++ { c <- new(T) } done <- true }() go func() { for j := 0; j < n; j++ { _ = (<-c).(*T) usestack() } done <- true }() } for i := 0; i < 20; i++ { <-done } }