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


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

相关推荐
深念Y1 小时前
为什么选 Go:直观、可维护、AI 友好
linux·开发语言·人工智能·golang·agent·harness
圣殿骑士-Khtangc1 小时前
Go-strings与bytes包字符串操作从零拷贝到高效拼接
golang
智购科技自动贩卖机3 小时前
自动售货机嵌入式系统Go语言开发实践:从资源受限设备到RTOS协程调度的工程化之路
大数据·linux·数据库·人工智能·yolo·架构·golang
吾皇斯巴达3 小时前
O_DIRECT与gcsfuse的go程序中实现内存页面对齐
开发语言·后端·golang
ylj_dev3 小时前
从 0 构建 AI Workload Platform(七):可观测性、故障注入与性能验证
go·prometheus·可观测性·opentelemetry·故障注入
灯澜忆梦6 小时前
【基于GO的Web开发11】gin获取URL‑Path 路径参数
前端·后端·golang·html·gin
我的div丢了肿么办6 小时前
go语言中基本数据类型的转换
后端·go
尼古拉斯-托尔斯泰-赵四7 小时前
Go 语言,你需要了解的一些规则
开发语言·后端·golang
灯澜忆梦8 小时前
【基于GO的Web开发10】gin获取HTML-Form表单提交参数
前端·后端·golang·html·gin
爱学习的小邓同学18 小时前
Golang --- (1)第一个Golang程序
开发语言·后端·golang