最近在练习并发编程。加上最近也在用Golang写代码,所以记录一下练习的题目。
第一道题目是用10个协程打印100条信息,创建10个协程。每个协程都会有自己的编号。每个协程都会被打印10次。
package main
import (
"fmt"
"strconv"
)
func main() {
ch := make(chan string, 10)
for i := 0; i < 10; i++ {
go func(i int) {
for j := 0; j < 10; j++ {
ch <- "Goroutine : " + strconv.Itoa(i)
}
}(i)
}
for k := 1; k <= 100; k++ {
i := <-ch
fmt.Println(k, i)
}
}
本题的关键是:
创建goroutines:通过for i := 0; i < 10; i++
循环,创建了10个goroutines。每次循环迭代都会启动一个新的goroutine。
输出: