【发布时间】:2019-04-08 10:06:05
【问题描述】:
执行go f会不会失败?
由于go关键字没有返回值,高并发时如何判断goroutine是否启动成功?
例如:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg = &sync.WaitGroup{}
go func() { // How do I know if there is any failure here?
wg.Add(1)
fmt.Println("halo world")
wg.Done()
}()
time.Sleep(time.Nanosecond)
wg.Wait()
}
【问题讨论】:
-
如果主程序没有失败,每个 goroutine 都会运行
-
"我怎么知道这里有没有失败?"一点也不。无法启动 goroutine 的情况非常极端,以至于您无法再做任何事情。即使有迹象表明此
go失败,您也无法以任何明智的方式对该信息做出反应。 -
我也是这么认为的,谢谢你解答我的疑惑。
标签: go concurrency goroutine