gitlab.com/Raven-IO/raven-delve@v1.22.4/_fixtures/goroutinestackprog.go (about)

     1  package main
     2  
     3  import "runtime"
     4  
     5  const N = 10
     6  
     7  func agoroutine(started chan<- struct{}, done chan<- struct{}, i int) {
     8  	started <- struct{}{}
     9  	done <- struct{}{}
    10  }
    11  
    12  var dummy int
    13  
    14  func stacktraceme() {
    15  	dummy++
    16  	return
    17  }
    18  
    19  func main() {
    20  	done := make(chan struct{})
    21  	started := make(chan struct{})
    22  	for i := 0; i < N; i++ {
    23  		go agoroutine(started, done, i)
    24  	}
    25  	for i := 0; i < N; i++ {
    26  		<-started
    27  	}
    28  	runtime.Gosched()
    29  	stacktraceme()
    30  	for i := 0; i < N; i++ {
    31  		<-done
    32  	}
    33  	n := 0
    34  	func1(n + 1)
    35  }
    36  
    37  func func1(n int) {
    38  	func2(n + 1)
    39  }
    40  
    41  func func2(n int) {
    42  	func3(n + 1)
    43  }
    44  
    45  func func3(n int) {
    46  	stacktraceme()
    47  }