|版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:https://blog.youkuaiyun.com/sgsgy5
在go语言中用channel通信稍不注意就会发生死锁情况,下面我们来看一下几种常见的死锁情况
第一种:同一个goroutine中,使用同一个 channel 读写。
package main
func main(){
ch:=make(chan int) //这就是在main程里面发生的死锁情况
ch<-6 // 这里会发生一直阻塞的情况,执行不到下面一句
<-ch
}
这是最简单的死锁情况
看运行结果
第二种:2个 以上的go程中, 使用同一个 channel 通信。 读写channel 先于 go程创建。
package main
func main(){
ch:=make(chan int)
ch<-666<