package main
import(
"fmt"
)
func main() {
intChan := make(chan int, 8000)
for i := 1;i<=8000;i++{
intChan<-i
}
close(intChan)
resultChan := make(chan int,2000)
exitChan := make(chan bool,2)
go cumber(intChan,resultChan,exitChan)
go cumber(intChan,resultChan,exitChan)
go func(){
for i:=0;i<=1;i++{
<-exitChan
}
close(resultChan)
}()
for {
res,ok:= <-resultChan
if !ok{
break
}
fmt.Println(res)
}
}
func cumber(IntChan chan int,resultChan chan int,exitChan chan bool) {
var flag bool
for{
num,ok := <-IntChan
if !ok {
break
}
flag = true
for i:=2;i< num;i++{
if num%i == 0{
flag = false
break
}
}
if flag {
resultChan<-num
}
}
exitChan<-true
}
1.向一个通道内写入 1-8000,然后关闭该通道
2.定义一个存储素数的通道,以及定义协程完成后推入的通道
3.开启两个协程,在协程内将查询出的素数放入通道内