4.3、Golang 并发编程-WaitGroup实现同步
示例1
package main
import (
"fmt"
)
func showMessage(i int) {
fmt.Printf("i: %v\n", i)
}
func main() {
for i := 0; i < 10; i++ {
showMessage(i)
}
}
输出
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
示例 2
package main
import (
"fmt"
)
func showMessage(i int) {
fmt.Printf("i: %v\n", i)
}
func main() {
for i := 0; i < 10; i++ {
// 启动协程来执行
go showMessage(i)
}
// 主协程执行结束
fmt.Println("end")
}
输出
i: 0
end
示例 3
package main
import (
"fmt"
"sync"
)
var wp sync.WaitGroup
func showMessage(i int) {
defer wp.Done()
fmt.Printf("i: %v\n", i)
}
func main() {
for i := 0; i < 10; i++ {
go showMessage(i)
wp.Add(1)
}
wp.Wait()
fmt.Println("end")
}
输出
i: 4
i: 1
i: 0
i: 5
i: 7
i: 8
i: 2
i: 3
i: 9
i: 6
end