上程序:
package main
import (
"fmt"
"time"
)
func printi(i int,goroutine_cnt chan int) {
fmt.Println(i)
time.Sleep(10*time.Microsecond)
<- goroutine_cnt
}
func main() {
goroutineCnt := make(chan int, 100)
for i:=1;i<10000;i++{
goroutineCnt <- 1
go printi(i, goroutineCnt)
}
defer close(goroutineCnt)
}
通过阻塞机制实现