2015-10-02 16:17:07 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"math/rand"
|
|
|
|
"sync"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
func demo(id int, wait *sync.WaitGroup) {
|
|
|
|
for i := 0; i < 100; i++ {
|
|
|
|
sleep := rand.Intn(10) + 1
|
|
|
|
fmt.Printf("id: %d step: %d sleeping %d\n", id, i, sleep)
|
2015-11-10 09:49:47 +00:00
|
|
|
time.Sleep(time.Duration(sleep) * time.Millisecond)
|
2015-10-02 16:17:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
wait.Done()
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
wait := new(sync.WaitGroup)
|
|
|
|
wait.Add(1)
|
|
|
|
wait.Add(1)
|
|
|
|
go demo(1, wait)
|
|
|
|
go demo(2, wait)
|
|
|
|
|
|
|
|
wait.Wait()
|
|
|
|
}
|