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


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

相关推荐
互联网中的一颗神经元7 小时前
06. Small 对象分配:mcache 无锁路径
开发语言·golang
abcefg_h11 小时前
MCP 实战指南:如何在项目中使用 Model Context Protocol 及其通信原理
开发语言·后端·golang·mcp
橘bird11 小时前
Go 语言学习教程 万字精讲(新手完整版)
go
ylj_dev12 小时前
从 0 构建 AI Workload Platform(四):从单机工作流内核到可靠控制面
docker·postgresql·架构·golang
FfHUCisI12 小时前
Golang database/sql 标准库基础
数据库·sql·golang
北漂燕郊杨哥13 小时前
CAD Mini Viewer —— 一个纯 Go 编写的轻量 DXF 查看器
golang·cad·dxf·cadview
xcLeigh14 小时前
Go入门:基本数据类型全览与选择指南
android·服务器·golang·教程·go热门
圣殿骑士-Khtangc14 小时前
Go分布式锁实现方案从Redis到etcd的完整对比
golang
用户3301448676314 小时前
08. mcentral:中心缓存的 span 管理
go
用户3301448676314 小时前
07. mcache.refill:缓存补充与 span 归还
go