golang报错fatal error: all goroutines are asleep - deadlock
代码示例:
func main() {ch := make(chan int)ch<-1fmt.Println(<-ch)
}
问题描述
报错fatal error: all goroutines are asleep - deadlock
golang中无缓冲chan的数据传递是同步的,处理不当会造成死锁
原因分析:
go中,main函数已协程的方式执行,在make(chan int)后,我们得到了一个无缓冲的通道,无缓冲的chan的数据读写是同步的,在写的时候,会去等待另一个协程去读,因此在ch<-1这一步就把main这个协程阻塞了,造成死锁,后面的<-ch是不会执行的。
解决方案:
1、开另一个协程处理写操作
func main() {ch := make(chan int)go func() {ch<-1}fmt.Println(<-ch) }
2、改为有缓冲通道
func main() {ch := make(chan int, 1)ch<-1fmt.Println(<-ch) }
golang报错fatal error: all goroutines are asleep - deadlock相关推荐
- golang fatal error: all goroutines are asleep - deadlock!
fatal error: all goroutines are asleep - deadlock! 这个错误的原因是: 在main goroutine线,期望从管道中获得一个数据,而这个数据必须是其 ...
- fatal error all goroutines are asleep - deadlock!
先看下面代码 package mainimport ("fmt""time" )func main() {ch1 := make(chan int)go fun ...
- Mysql报错Fatal error:Can't open and lock privilege tables
Mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 安装mysql后 ...
- 安装Python3.5后,pip报错Fatal error in launcher: Unable to create process using ‘“‘解决方案
安装Python3.5后,pip报错Fatal error in launcher: Unable to create process using '"'解决方案 参考文章: (1)安装Py ...
- 编译R3LIVE报错: fatal error: livox_ros_driver/CustomMsg.h: 没有那个文件或目录 4 | #include <livox_ros_driver/
安装编译了livox_ros_driver和livox_SDK,在编译R3LIVE算法时,遇到报错 fatal error: livox_ros_driver/CustomMsg.h: 没有那个文件或 ...
- 启动jupyter notebook报错fatal error C1083: Cannot open include file: ‘sys/un.h‘: No such file or directo
启动jupyter notebook报错fatal error C1083 太久没用jupyter notebook,更新了Anaconda的base环境的jupyter库,而没有更新之前安装的其他内 ...
- Mysql报错Fatal error: Can#39;t open and lock privilege tables: Table #39;mysql.host#39; doesn#39;t...
安装mysql后,启动时候没有启动成功,查看了下日志报错如下:--------------------------------------------- 1 可以:初始化mysql:mysql_i ...
- 【错误记录】编译 Linux 内核报错 ( fatal error: openssl/opensslv.h: No such file or directory )
文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Linux 内核 , 执行 sudo make 命令 , 开始正式编译 Linux 内核 , 报如下错误 : root@ubuntu:~/ke ...
- 【错误记录】编译 ijkplayer 报错 (fatal error: libyuv.h: No such file or directory #include “libyuv.h“ )
文章目录 一.报错信息 二.解决方案 参考 https://github.com/bilibili/ijkplayer 项目的编译过程 ; 一.报错信息 在编译完 ffmpeg 之后 , 执行 ./c ...
- 【错误记录】编译 ijkplayer 报错 (fatal error: ijksoundtouch/ijksoundtouch_wrap.h: No such file or directory )
文章目录 一.报错信息 二.解决方案 参考 https://github.com/bilibili/ijkplayer 项目的编译过程 ; 一.报错信息 在编译完 ffmpeg 之后 , 执行 ./c ...
最新文章
- ecshop微信扫描支付开发
- 大型网站架构演变和知识体系
- ArcGIS Engine中的8种数据访问【转】
- 审计某开源商城中的漏洞大礼包
- 解析java源代码_一步步解析java执行内幕
- memcached的java客户端_Memcached Java客户端
- php用栈遍历目录和文件,php如何遍历目录,php非递归算法遍历目录的例子
- VM虚拟机Linux克隆后网卡的相关操作
- PHP修复输入验证代码中的漏洞
- 2016级算法第一次练习赛-D.AlvinZH的儿时回忆——跳房子
- 启动系统时无法正常启动提示\windows\system32\winload.efi 解决方案
- post和get的区别
- postgresql 累乘
- 小米迎来NLP首席科学家王斌:中科院研究员,雷军崔宝秋亲学弟
- SSDT inlineHook
- 射频:TD-LTE与FDD-LTE区别
- 多功能搜索友联自助交换多色彩皮肤网站图片本地化附带交易系统网址导航源码蜘蛛
- WUSTOJ 1923 一笔画 【回溯】
- 数据结构和算法(二):摘要算法之SHA和MD5
- Unnecessary escape character: \- no-useless-escape eslint