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

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  	"sync"
     7  )
     8  
     9  var v int = 99
    10  var wg sync.WaitGroup
    11  var s string
    12  
    13  func Foo(x, y int) (z int) {
    14  	//s = fmt.Sprintf("x=%d, y=%d, z=%d\n", x, y, z)
    15  	z = x + y
    16  	return
    17  }
    18  
    19  func Threads(fn func(x, y int) int) {
    20  	for j := 0; j < 100; j++ {
    21  		wg.Add(1)
    22  		go func() {
    23  			for k := 0; k < 100; k++ {
    24  				fn(1, 2)
    25  				time.Sleep(10 * time.Millisecond)
    26  			}
    27  			wg.Done()
    28  		}()
    29  	}
    30  }
    31  
    32  func main() {
    33  	x := v
    34  	y := x * x
    35  	var z int
    36  	Threads(Foo)
    37  	for i := 0; i < 100; i++ {
    38  		z = Foo(x, y)
    39  	}
    40  	fmt.Printf("z=%d\n", z)
    41  	wg.Wait()
    42  }