Goroutine 过早进入睡眠状态

php小编香蕉在这里为大家介绍一种常见的问题,即Goroutine过早进入睡眠状态。在Go语言中使用Goroutine并发执行任务是非常高效的,但有时候我们会遇到这样的情况,即Goroutine在执行任务之前就进入了睡眠状态,导致任务无法正常进行。本文将详细解释这个问题的原因,并提供解决方法,帮助大家更好地理解和使用Goroutine。,代码:,这段代码没有做任何特别的事情,我只是想理解通道和 goroutine。但出了点问题,协程在两次循环和应用程序崩溃后进入休眠状态。,让我们分析一下它的作用 – 每隔一秒消息发送到 link。函数 b 在两个地方接收它,因此调用了 print a 和 b。所以基本上每一秒 a 和 b 都应该出现在控制台中。但由于我不知道的原因,它没有发生,程序打印 a 和 b 一次,然后崩溃。
我可能对这个概念理解不够(golang确实不直观),所以我希望我能在这里得到答案。,只有当有 goroutine 从中接收数据时,发送到无缓冲通道的通道才会成功。对于前两次发送,有 goroutine 从 link 通道接收。但是它们收到一个值并终止,并且不再有任何 goroutine 从 link 接收,因此第三个发送到 link 的块。由于没有其他 goroutine 运行,程序出现死锁。,
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册