go select用法
来源:互联网 发布:超人电力工程预算软件 编辑:程序博客网 时间:2024/06/06 10:44
例子1:
packagemain
import (
"fmt"
)
func main() {
ch1 := make(chan int, 1)
ch2 := make(chan int, 2)
select {
case <-ch1:
fmt.Println("ch1")
case <-ch2:
fmt.Println("ch2")
}
}
运行:
go run testSelect.go
结果:
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [select]:
main.main()
C:/Users/L/go/src/udpClient/select.go:10 +0x22d
很明显是死锁了,原因select一直在等待case而未结果
例子2:
packagemain
import (
"fmt"
"time"
)
func main() {
ch2 := make(chan bool, 1)
go func() {
time.Sleep(1e9) // sleep 1秒
ch2 <- true
}()
ch1 := make(chan int)
select {
case <-ch1:
case <-ch2:
fmt.Println("ch2!")
}
}
运行:
go run testSelect2.go
结果:
ch2!
运行到case2后会退出,不会一直阻塞等待
阅读全文
0 0
- GO select用法详解
- go select用法
- go中select的用法
- 【GOLANG】Go语言学习-select用法
- 【GOLANG】Go语言学习-select用法
- 【GOLANG】Go语言学习-select用法
- go语音之select
- Go语音之select
- go语言select关注点
- Go 语言 select 语句
- Go select 语句
- select用法
- select()用法
- select()用法
- select()用法
- select用法
- select 用法
- select用法
- JS的变量声明
- 关于RxJava最友好的文章——背压(Backpressure)
- 发工资了
- 简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera
- python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)
- go select用法
- vb.net 教程 12-5 webbrowser 与窗体交互3
- poj1986 lca(tarjan算法)
- 写好Hive 程序的五个小结[笔记7]
- zookeeper系列(一)
- jQuery ajax getjson demo
- SAMBA(下)
- 笔记8——Linux系统定时任务
- PHP基础之流程控制