go goroutines 源码

  • 2022-07-15
  • 浏览 (885)

golang goroutines 代码

文件路径:/test/chan/goroutines.go

// 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
}

相关信息

go 源码目录

相关文章

go doubleselect 源码

go fifo 源码

go nonblock 源码

go perm 源码

go powser1 源码

go powser2 源码

go select 源码

go select2 源码

go select3 源码

go select4 源码

0  赞