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


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

相关推荐
呆萌很24 分钟前
【GO】goroutine 协程练习题
golang
UIUV15 小时前
Go语言入门到精通学习笔记
后端·go·编程语言
littleschemer18 小时前
Go异步持久化如何防止炸服
go·map并发崩溃
北漂Zachary19 小时前
四大编程语言终极对决:汇编/C#/Go/Java谁更强
汇编·golang·c#
Stark-C19 小时前
NAS音乐必备神器,全平台音乐收割机!极空间部署『Go Music DL』
开发语言·后端·golang
不会敲代码11 天前
从零开始学 Go:协程并发与 Web 开发初探
go
扉页的墨1 天前
Wails v2 实战:用 Go 写桌面应用,从 0 到 1 构建一个本地笔记工具
go
ALex_zry1 天前
go-zero Redis缓存封装与Model层设计
redis·缓存·golang·气象
我叫黑大帅1 天前
从零实现一个完整 RAG 系统:基于 Eino 框架的检索增强生成实战
后端·面试·go
XMYX-02 天前
17 - Go 通道 Channel 底层原理 + 实战详解
开发语言·golang