这篇文章主要介绍“go语言中怎么使用select”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言中怎么使用select”文章能帮助大家解决问题。在golang语言中,select语句 就是用来监听和channel有关的IO操作,当IO操作发生时,触发相应的case动作。有了 select语句,可以实现 main主线程 与 goroutine线程 之间的互动。注意事项select语句 只能用于channel信道的IO操作,每个case都必须是一个信道。如果不设置 de免费云主机域名fault条件,当没有IO操作发生时,select语句就会一直阻塞;如果有一个或多个IO操作发生时,Go运行时会随机选择一个case执行,但此时将无法保证执行顺序;对于case语句,如果存在信道值为nil的读写操作,则该分支将被忽略,可以理解为相当于从select语句中删除了这个case;对于空的 select语句,会引起死锁;对于在 for中的select语句,不能添加 default,否则会引起cpu占用过高的问题;(1)多个IO操作发生时,case语句是随机执行的多次执行后,会随机打印 “ch2 read” 或 “ch3 read”(2)空select语句执行后,引发死锁,打印如下:fatal error: all goroutines are asleep – deadlock!goroutine 1 [select (no cases)]:
main.main()
xxx/test.go:4 +0x27
exit status 2(3)for中的select 引起CPU资源消耗过高在for{}的select语句中使用了 default后,线程就会无限执行default条件,直到quit信道中读到数据,否则会一直在一个死循环中运行,从而导致占满整个CPU资源。在 for{}的select语句中,不建议使用 default条件。(1)实现 main主线程与 goroutine线程 之间的交互、通信运行:from main msg: [aaa]
please input string: bbb
from main msg: [bbb]
please input string: bye
from main msg: [bye]
main over(2)超时实现关于“go语言中怎么使用select”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。
本文小编为大家详细介绍“Java双指针法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java双指针法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通常用在线性的数据结构中,比如链表和数组。指针其实就是数据的索引或…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。