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


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

相关推荐
哈里谢顿8 小时前
Python 开发者的 Golang 完全入门指南
go
qinaoaini15 小时前
[golang][MAC]Go环境搭建+VsCode配置
vscode·macos·golang
花酒锄作田16 小时前
Go - slog使用入门
golang
u***357416 小时前
对基因列表中批量的基因进行GO和KEGG注释
开发语言·数据库·golang
好家伙VCC20 小时前
# 发散创新:基于 Go 语言打造高性能服务网格的实践与突破在微服务架构
java·python·微服务·架构·golang
unirst198500721 小时前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
YGGP21 小时前
【Golang】LeetCode 3. 无重复字符的最长子串
开发语言·leetcode·golang
大黄说说1 天前
Go 实战 LeetCode 151:高效翻转字符串中的单词(含空格处理技巧)
开发语言·leetcode·golang
风无雨1 天前
Go 本地启动踩坑:为什么 `go run main.go` 会报 `undefined`?
golang
桂花很香,旭很美1 天前
[7天实战入门Go语言后端] Day 0:预习——关键词、语法与常用包一览
开发语言·后端·golang