执行一个简单协程
package main
import (
"fmt"
"time"
)
func main(){
for i := 0; i < 100 ; i++{
go fmt.Println(i)
}
time.Sleep(time.Second)
}
分析:
为什么会有sleep 呢, 主线程为了等待goroutine都运行完毕, 不得不在程序的末尾使用time.Sleep()来睡眠一段时间, 等待 其他线程充分运行 。对于简单的代码100 个for 循环可以在1秒内运行完但是实际的场景中大部分是1秒不够的, 而且大部分的时间 我们都无法预测for 循环内的代码运行时间的长短, 这个时候就不能使用time.sleep() 来完成等待操作了。
使用管道来 完成 操作
func main() {
c := make(chan bool, 100