并发编程select
2021/11/13 22:41:25
本文主要是介绍并发编程select,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
如果多管道,一般使用for循环读取。
package main import "fmt" func main() { ch1:=make(chan int) go func(){ sum:=0 for i := 1; i < 1000; i++ { sum+=i ch1<-sum } close(ch1) //关闭管道 }() ch2:=make(chan int) go func(){ for i := 1; i < 1000; i++ { ch2<-i+2 } close(ch2) //关闭管道 }() // for { //死循环方式读取管道值 // value,ok:=<-ch1 // if ok{ // fmt.Println(" for ch1=",value) // }else{ // break // } // } // for c:=range ch1{ //较为推荐的for-range读取,直到管道关闭就不再接收。 // fmt.Println("range cha1=",c) // } //如果定义多个管道,那么以上两种就有点吃力了,引入select方法 for { select { //必须为IO操作,要么读要么写。当多个分支条件满足时,会随机选择一个分支执行,本题需要持续接收值,所以需要加for case value,ok:=<-ch1: if ok { fmt.Println("select ch1=",value) } case value,ok:=<-ch2: if ok { fmt.Println("select ch2=",value) } } } fmt.Println("main 结束") //为啥不执行这个? }
这篇关于并发编程select的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-10Kafka GUI 客户端推荐Kafka-King v0.32-icode9专业技术文章分享
- 2024-11-10ES GUI 客户端推荐ES-King v0.13-icode9专业技术文章分享
- 2024-11-09uniapp中的父类组件怎么获取子类组件的内容信息?-icode9专业技术文章分享
- 2024-11-09超大数据量从云端迁移到本地的可行性方案是什么?-icode9专业技术文章分享
- 2024-11-09想在web项目直接预览word excel pdf ppt 等文件有哪些方法?-icode9专业技术文章分享
- 2024-11-09uniapp 在 开发 app 中,怎么在 video 暂停时获取到当前暂停帧的图片-icode9专业技术文章分享
- 2024-11-08阿里云ECS项目实战:新手入门教程
- 2024-11-08阿里云ECS资料入门教程
- 2024-11-08Nacos配置中心资料详解:新手入门教程
- 2024-11-08405 Not Allowed错误是什么,怎么排查解决-icode9专业技术文章分享