golang中如何监控多个goroute协程是否执行完成
package main
import (
"fmt"
)
// 将intchan管道中的素数插入到管道resultchan中,协程完成关闭时在exitchan中记录一次
func calc(intchan, resultchan, exitchan chan int) {
for v := range intchan {
flag := true
for i := 2; i < v && flag == true; i++ {
if v%i == 0 {
flag = false
break
}
}
if flag {
fmt.Println(v, "is 素数")
resultchan <- v
}
}
exitchan <- 1 // 记录协程管斌
}
func main() {
var (
IntChan = make(chan int, 1000)
ResultChan = make(chan int, 1000)
ExitChan = make(chan int, 8)
)
for i := 0; i < 100; i++ {
IntChan <- i
}
close(IntChan)
for i := 0