统计1-8000之间的素数。
整体框架:
说明:有五个协程,三个管道。其中一个协程用于写入数字到intChan管道中,另外四个用于取出intChan管道中的数字并判断是否是素数,然后将素数写入到primeChan管道中,最后如果后面四个协程哪一个工作完了,就写入一个true到exit管道中,最后利用循环判断这四个协程是否都完成任务,并退出。
main.go
test.go
package test import (
"fmt"
"time"
) func isPrime(n int) bool {
for i := ; i <= n; i++ {
if n%i == {
return false
}
}
return true
}
func Test() {
start := time.Now()
for i := ; i < ; i++ {
isPrime(i)
}
cost := time.Since(start)
fmt.Printf("传统方法消耗时间为:%s", cost)
}
最后运行一下看看结果。
使用协程的方法的确是要比使用传统的方法要快的,有其是在数据量进一步的增大时。至此,一个管道和协程的实例就算完成了,