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并发插入导致死锁


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

相关推荐
久违 °2 分钟前
【AI-Agent】TagMatrix 数据标注工具开发
人工智能·数据分析·go·agent·数据隐私
小羊在睡觉18 分钟前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
ruxingli9 小时前
Golang iota详解
开发语言·后端·golang
用户398346161209 小时前
Go-Spring 实战第 15 课 —— Condition:根据配置和上下文激活 Bean
spring·go
暗冰ཏོ11 小时前
Go 语言从入门到后端项目实战完整指南
开发语言·后端·golang·go·go语言
Reisentyan12 小时前
[Advance]GoLang Learn Data Day 4
java·数据库·golang
brycegao32112 小时前
Vue3+Go 全栈项目上线阿里云|从 0 到 1 踩坑全纪录
开发语言·阿里云·golang
会编程的土豆14 小时前
Go 里的 error 接口 + 假 nil(超级重点)
开发语言·后端·golang
basketball61614 小时前
Golang:基本输入输出使用方法总结
开发语言·golang·xcode
codeejun15 小时前
每日一Go-70、Prometheus + Grafana 从采集到告警的完整实战(Go + Kind)
golang·grafana·prometheus