github.com/neilgarb/delve@v1.9.2-nobreaks/_fixtures/databpeasy.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "runtime" 6 "sync" 7 "time" 8 ) 9 10 var globalvar1 = 0 11 var globalvar2 = 0 12 13 func main() { // Position 0 14 runtime.LockOSThread() 15 globalvar2 = 1 16 fmt.Printf("%d %d\n", globalvar1, globalvar2) 17 globalvar2 = globalvar1 + 1 18 globalvar1 = globalvar2 + 1 19 fmt.Printf("%d %d\n", globalvar1, globalvar2) // Position 1 20 21 globalvar2 = globalvar2 + 1 // Position 2 22 globalvar2 = globalvar1 + globalvar2 // Position 3 23 fmt.Printf("%d %d\n", globalvar1, globalvar2) 24 globalvar1 = globalvar2 + 1 25 fmt.Printf("%d %d\n", globalvar1, globalvar2) 26 27 done := make(chan struct{}) // Position 4 28 var wg sync.WaitGroup 29 for i := 0; i < 20; i++ { 30 wg.Add(1) 31 go waitfunc(i, &wg) 32 } 33 wg.Wait() 34 go f(done) 35 <-done 36 } 37 38 func f(done chan struct{}) { 39 runtime.LockOSThread() 40 globalvar1 = globalvar2 + 2 41 close(done) // Position 5 42 } 43 44 func waitfunc(i int, wg *sync.WaitGroup) { 45 runtime.LockOSThread() 46 wg.Done() 47 time.Sleep(50 * time.Second) 48 }