请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

for range是同步调用,阻塞的。 而select是非阻塞,异步的轮询

同步调用会阻塞,为什么会引起效率低于select异步轮询?为什么会引起定时器有延迟?

正在回答 回答被采纳积分+3

1回答

艾文西 2018-10-16 10:24:23

你的问题不就是答案吗?阻塞自然会比非阻塞的要低效啊

0 回复 有任何疑惑可以回复我~
  • 提问者 黯淡_0001 #1
    假设在一个协程里面阻塞和在一个协程里面使用select非阻塞,非阻塞就是他能去做其他事情,但是select一般不都是在for循环里面,一直重复等待chan有值,阻塞则是等着有值,没感觉哪个更高效呀?
    回复 有任何疑惑可以回复我~ 2018-10-16 15:01:58
  • 艾文西 回复 提问者 黯淡_0001 #2
    首先select不一定会在for里面,我们写到for里面是强制让它一直处于监听状态。更多的情况下select是顺序调用而非循环。
    
    第二,同步调用是指在当前goroutine没有调用新gotoutine之前所有的操作都是顺序执行,不单单是等待。
    回复 有任何疑惑可以回复我~ 2018-10-27 14:15:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信