package api import ( "fmt" "sync" "time" ) //需求:统计1-120000 的数字中哪些是素数? /** 1 协程 统计 1-30000 2 协程 统计 30001-60000 3 协程 统计 60001-90000 4 协程 统计 90001-120000 //start:(n-1)*30000+1 end:n*30000 */ var wg sync.WaitGroup //循环的方式得到结果 func test() { start := time.Now().Unix() for num := 2; num < 120000; num++ { var flag = true for i := 2; i < num; i++ { if num%i == 0 { flag = false break } } if flag { fmt.Println(num, "是素数") } } end := time.Now().Unix() fmt.Println(end - start) } //协程的方式得到结果 func test1(n int) { for num := (n-1)*30000 + 1; num < n*30000; num++ { var flag = true for i := 2; i < num; i++ { if num%i == 0 { flag = false break } } if flag { fmt.Println(num, "是素数") } } wg.Done() } //开启4个协程,去完成需要的结果 func start() { start := time.Now().Unix() for i := 1; i <= 4; i++ { wg.Add(1) go test1(i) } wg.Wait() end := time.Now().Unix() fmt.Println(end - start) fmt.Println("执行完毕!") }
go 多个开多个协程完成任务
最新推荐文章于 2024-01-26 17:45:09 发布