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


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

相关推荐
Wenweno0o20 小时前
Eino-Document 组件使用指南
golang·大模型·智能体·eino
我叫黑大帅20 小时前
通过eino-ext如何正常indexer RAG?
后端·面试·go
审判长烧鸡1 天前
GO闭包【4】“普通闭包”与“循环闭包”之间捕获的核心区别
go·捕获·闭包
lolo大魔王1 天前
Go语言的反射机制
开发语言·后端·算法·golang
审判长烧鸡1 天前
Go 闭包【1】基础
go·闭包
XMYX-01 天前
16 - Go 协程(goroutine):从基础到实战
开发语言·golang
lolo大魔王1 天前
Go语言的文件处理操作
golang
jieyucx1 天前
Golang 完整安装与 VSCode 开发环境搭建教程
开发语言·vscode·golang
codeejun1 天前
每日一Go-52、Go微服务--请求超时与熔断策略实战
微服务·golang·iphone
ん贤1 天前
Go GC垃圾回收机制
算法·go·gc·垃圾回收