社区
其他技术讨论专区
帖子详情
如果直接在main方法中读取会出现error,如果使用go receive方式程序正常
weixin_38049686
2019-09-20 10:35:30
...全文
63
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
打赏
举报
回复
抱歉,是十个
10分钟实现微信小
程序
支付功能
1,首先右键pay,然后选择在终端
中
打开 2,我们
使用
npm来安装这个依赖。 在命令行里执行 npm i tenpay 安装完成后,我们的pay云函数
会
多出一个package.json 文件 到这里我们的tenpay依赖就安装好了。 四,编写云...
解决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&...
Golang
程序
报错:fatal
error
: all goroutines are asleep - deadlock
针对一块阻塞处,判断其写操作
会
不
会
在其后面,
程序
永远到不了;理清调用链逻辑,确定协程开启的地方。【开启协程的地方不
会
阻塞,立即往下执行】如果实在还无法执行,将你的代码post到评论区,让大家一起帮你解决!
解决Python OpenCV
读取
视频并抽帧
出现
error
while decoding的问题
解决Python OpenCV
读取
视频抽帧
出现
error
while decoding的问题1. 问题2. 解决3. 源代码参考 1. 问题
读取
H264视频,抽帧视频并保存,报错如下; [aac @ 00000220b9a07fc0] Input buffer exhausted before END ...
Go channel及其
使用
实例 【Go语言圣经笔记】
如果说goroutine是Go语言
程序
的并发体的话,那么channels则是它们之间的通信机制。一个channel是一个通信系统,它可以让一个goroutine通过它给另一个goroutine发送值信息。每个channel都有一个特定的类型,也就是...
其他技术讨论专区
433
社区成员
791,270
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章