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


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

相关推荐
Data_Journal12 小时前
Scrapyd:分步教程
开发语言·python·microsoft·golang·编辑器·html·iphone
程序员小八77715 小时前
Go Web 工程化:日志、配置与错误处理中间件,让服务「能上线」
前端·中间件·golang
newerp17 小时前
Golang 切片扩容策略
后端·程序员·go
我的div丢了肿么办17 小时前
go中make声明切片, 修改切片,append给切片扩容,合并切片,复制切片
后端·go
纪卓志George17 小时前
保守十四年:Go 的泛型方法与丢失的定位
go
运维开发笔记18 小时前
8.3 Go Struct 嵌入学习笔记
go
xiangjiaodalishi18 小时前
2026年GEO生成式引擎优化服务商观察:企业如何挑选适配自身的AI营销协作伙伴
go
蛋先生DX19 小时前
明明都是源码到CPU,各语言中间原理咋不是一个套路?
java·javascript·go
西瓜太郎4992 天前
从请求到上游:实现一条可观测的多模型调用链
go
newerp2 天前
Golang 切片底层结构
后端·程序员·go