package main
import (
"fmt"
"sync"
"time"
)
func main() {
var r1, r2, r3 string
start := time.Now()
var wg sync.WaitGroup
wg.Add(3)
go func() {
r1 = f1()
wg.Done()
}()
go func() {
r2 = f2()
wg.Done()
}()
go func() {
r3 = f3()
wg.Done()
}()
wg.Wait()
fmt.Println("Duration:", time.Since(start))
fmt.Println("r1 =", r1)
fmt.Println("r2 =", r2)
fmt.Println("r3 =", r3)
}
func f1() string {
time.Sleep(300 * time.Millisecond)
return "f1()"
}
func f2() string {
time.Sleep(500 * time.Millisecond)
return "f2()"
}
func f3() string {
time.Sleep(100 * time.Millisecond)
return "f3()"
}
/*
run:
Duration: 500.943167ms
r1 = f1()
r2 = f2()
r3 = f3()
*/