其他分享
首页 > 其他分享> > go 语言 goroutine通信

go 语言 goroutine通信

作者:互联网

示例demo52 package main
import (   "fmt" )
func calc(taskChan chan int, resChan chan int, exitChan chan bool) {   for v := range taskChan {     flag := true     for i := 2; i < v; i++ {       if v%i == 0 {         flag = false         break       }     }     if flag {         //值放到resChan 通道里       resChan <- v     }   }     fmt.Println("exit")     exitChan <- true   }
func main() {   intChan := make(chan int, 1000) //初始化 intchan 通道 长度1000   resultChan := make(chan int, 1000) //初始化 resultChan通道 长度1000   closeChan := make(chan bool, 8)   go func() { //协程方式放进10000个数到intChan通道里     for i := 0; i < 100000; i++ {       intChan <- i     }     close(intChan) //关闭intChan通道   }()
  //启8个协程 运行计算 传入intChan 和resultChan   for i := 0; i < 8; i++ {     go calc(intChan, resultChan, closeChan)   }
  //等待所有计算的goroutine全部退出   go func() {     for i := 0; i < 8; i++ {       <-closeChan     }     close(closeChan) //关闭closeChan通道     close(resultChan) //关闭resultChan通道   }()
  //循环 resultChan遍历数据   for v := range resultChan {     fmt.Println(v)   }
}

标签:intChan,goroutine,chan,通信,int,func,go,resultChan
来源: https://www.cnblogs.com/chenweihao/p/16611320.html