fatal error: all goroutines are asleep - deadlock!

go 复制代码
func main() {

	var taskChannle =make(chan int)

	taskChannle <- 1

	fmt.Println(<-taskChannle)

channel初始化时没有指定缓冲的话,默认是没有缓冲的。也就是说往channel中send数据是一个阻塞操作,直到Channle有读取操作。

所以当代码执行到taskChannle <- 1时就产生了阻塞,不会往下走,所以go就认为all goroutines are asleep - deadlock!

将代码改成如下:

go 复制代码
func main() {

	var taskChannle =make(chan int)

	go func() {
		fmt.Println(<-taskChannle)
	}()
	
	taskChannle <- 1

就不会产生死锁,或者声明带缓冲的channel

推荐阅读

1、原来阿里字节员工简历长这样

2、一条SQL差点引发离职

3、MySQL并发插入导致死锁


如果你也觉得我的分享有价值,记得点赞或者收藏哦!你的鼓励与支持,会让我更有动力写出更好的文章哦!

相关推荐
存在morning3 小时前
【GO语言开发实践】二 GO 并发快速上手
大数据·开发语言·golang
geovindu12 小时前
go: Read-Write Lock Pattern
开发语言·后端·设计模式·golang·读写锁模式
知彼解己14 小时前
Go 开发环境 安装
后端·golang
会编程的土豆15 小时前
Go 连接 Redis 代码详细解析
开发语言·redis·golang
审判长烧鸡16 小时前
【Go 时间类型】时间对比
go·时间
科学界的小白16 小时前
【硬核开源】手搓国产云原生网关:基于“零态流控”的Go语言百万并发实战(附完整代码)
go
XMYX-016 小时前
31 - Go url 解析:从字符串到结构化请求的完整路径
开发语言·golang
lolo大魔王17 小时前
Go 语言数据库操作|GORM 实现 CRUD 超详细实战
数据库·golang
喵了几个咪17 小时前
单体项目如何“无感”演进微服务?GoWind的Core+BFF分层实践
微服务·架构·golang·gowind·bff
139的世界真奇妙17 小时前
生产问题排查记录
golang·bug·学习方法