社区
其他技术讨论专区
帖子详情
如果直接在main方法中读取会出现error,如果使用go receive方式程序正常
weixin_38049686
2019-09-20 10:35:30
...全文
159
11
打赏
收藏
如果直接在main方法中读取会出现error,如果使用go receive方式程序正常
[图片]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38091120
2019-09-20
打赏
举报
回复
o,还得注意,关闭channel 的操作不能和读取channel 的操作在一个协程里
weixin_38095707
2019-09-20
打赏
举报
回复
这个代码一共创建了11个goroutine, send 10个, main 1个, 当send 10 个都运行完后, 唯一一个main goroutine就阻塞在接受通道的for循环那等待数据进来, 此时没有任何goroutine可以运行, 所以发生死锁
weixin_38111013
2019-09-20
打赏
举报
回复
多谢回答,现在明白些了, 另外我问一下, 1.range方式读取chan , 如果不手动close掉chan ,对于range来说,他会一直读取chan是吗? 我尝试过读取 ` ch := make(chan int) for n:= range ch{ fmt.Println(n) } ` 这样是会报错的。 2. 我能简单的把go协程理解成线程安全的队列吗?
weixin_38112805
2019-09-20
打赏
举报
回复
这两个不是一个问题,第一:for range 去读取channel 是一直去读取的,直到你的channel 关闭。这是正常情况。第二: ` ch := make(chan int) for n:= range ch{ fmt.Println(n) } `这种,创建并没有写入channel ,所以读取的时候,会直接报错deadlock。
weixin_38123446
2019-09-20
打赏
举报
回复
明白了,多谢回答
weixin_38128682
2019-09-20
打赏
举报
回复
多谢回答,你这思路真好。
weixin_38141078
2019-09-20
打赏
举报
回复
- 多谢回答,现在已经搞懂了,最开始没有明白 for range 跟channel组合玩法。
weixin_38068363
2019-09-20
打赏
举报
回复
因为如果放在main中,会从channel中读数据,没有读到就会死锁。
weixin_38074625
2019-09-20
打赏
举报
回复
@waini1110</a> #### 首先感谢回答,另外: ##### 对于读取来说应该是发现channel有数据就拿 ,没有数据就阻塞 ##### 对于发送来说向channel中存,存完阻塞,等待channel数据被取走后再存 ##### 现在我在main中不断读取channel, 假设channel不存在数据,他应该只是阻塞状态,为什么会提示 all goroutines are asleep - deadlock
weixin_38075910
2019-09-20
打赏
举报
回复
因为你只写了五个,五个写完之后,只有读的操作,没有写的操作,才会死锁。你写完之后关掉channel,就不会有这个问题
weixin_38080819
2019-09-20
打赏
举报
回复
抱歉,是十个
使用
Go语言开发微信小
程序
项目实战
随着互联网技术的飞速发展,微信小...本章旨在为读者提供Go语言在微信小
程序
开发
中
的应用概况。我们将从以下几个方面入手,逐步展开深入探讨:Go语言简介:首先,简要介绍Go语言的发展背景、特点以及在编程领域的定位。
解决Python OpenCV
读取
IP摄像头(RTSP等)
出现
error
while decoding的问题
先来看一个简单的
读取
RTSP的示例
程序
import cv2 cap=cv2.VideoCapture("rtsp://admin:admin_123@172.0.0.0") ret,frame = cap.read() while ret: ret,frame = cap.read() cv2.imshow("frame&...
解决Python OpenCV
读取
视频并抽帧
出现
error
while decoding的问题
解决Python OpenCV
读取
视频抽帧
出现
error
while decoding的问题1. 问题2. 解决3. 源代码参考 1. 问题
读取
H264视频,抽帧视频并保存,报错如下; [aac @ 00000220b9a07fc0] Input buffer exhausted before END ...
Golang
程序
报错:fatal
error
: all goroutines are asleep - deadlock
针对一块阻塞处,判断其写操作
会
不
会
在其后面,
程序
永远到不了;理清调用链逻辑,确定协程开启的地方。【开启协程的地方不
会
阻塞,立即往下执行】如果实在还无法执行,将你的代码post到评论区,让大家一起帮你解决!
详解Golang
中
channel的用法
在golang并发编程实践
中
,channel的正确运用
直接
影响
程序
的健壮性和执行效率。本文将深入探讨几种提升channel
使用
效能的典型场景与实现策略。
其他技术讨论专区
476
社区成员
790,963
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章