...
Run Format

Source file test/chan/goroutines.go

Documentation: test/chan

  // run
  
  // Copyright 2009 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.
  
  // Torture test for goroutines.
  // Make a lot of goroutines, threaded together, and tear them down cleanly.
  
  package main
  
  import (
  	"os"
  	"strconv"
  )
  
  func f(left, right chan int) {
  	left <- <-right
  }
  
  func main() {
  	var n = 10000
  	if len(os.Args) > 1 {
  		var err error
  		n, err = strconv.Atoi(os.Args[1])
  		if err != nil {
  			print("bad arg\n")
  			os.Exit(1)
  		}
  	}
  	leftmost := make(chan int)
  	right := leftmost
  	left := leftmost
  	for i := 0; i < n; i++ {
  		right = make(chan int)
  		go f(left, right)
  		left = right
  	}
  	go func(c chan int) { c <- 1 }(right)
  	<-leftmost
  }
  

View as plain text