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


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

相关推荐
XMYX-01 天前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang
小羊在睡觉2 天前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go
用户398346161202 天前
Go-Spring 实战第 7 课 —— Profile 多环境配置:基础配置与环境差异如何避免复制
spring·go
姚不倒2 天前
Go 进阶实战:实现泛型数据验证器
云原生·golang
XMYX-02 天前
36 - Go exec 执行命令
开发语言·golang
lolo大魔王2 天前
Go 语言 HTTP 协议与 RESTful API 实训全解(理论 + 实战 + 规范)
http·golang·restful
审判长烧鸡2 天前
【Go Context】终极指南
go
一只小逸白2 天前
LeetCode Go 常用函数速查表
linux·leetcode·golang
审判长烧鸡2 天前
【Go Test】单元测试保姆级完整指南
单元测试·go
LCG元2 天前
【Go后端开发】从 0 到生产级:高性能分布式网关全实现 + 接口限流熔断降级实战
分布式·golang·wpf