Go 戈鲁廷:时间。睡觉还是时间。之后
我想知道在goroutine,Go 戈鲁廷:时间。睡觉还是时间。之后,go,Go,我想知道在goroutine,time.Sleep()或中等待的更好方法是什么,我认为这对大多数程序来说并不重要。已经有过一段时间了,但我认为不能得出任何结论 实际上,After在已经需要在多个频道上选择但也需要超时的情况下非常有用: select { case c := <-someChan: .. case c := <-otherChan: .. case <-time.After(time.Second * 42): } 这两者都将暂停当前goroutine
time.Sleep()
或中等待的更好方法是什么,我认为这对大多数程序来说并不重要。已经有过一段时间了,但我认为不能得出任何结论
实际上,After
在已经需要在多个频道上选择但也需要超时的情况下非常有用:
select {
case c := <-someChan:
..
case c := <-otherChan:
..
case <-time.After(time.Second * 42):
}
这两者都将暂停当前goroutine执行一段时间。不同的是函数调用时间。Sleep(d)会让当前goroutine进入Sleep子状态,但仍保持在running状态,而channel receive操作
futex(??, FUTEX_WAIT, 0, {41, 999892351}
^^ 41 seconds and change