分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
```go
package main
import "fmt"
import "sync"
func main(){
var wg sync.WaitGroup
wg.Add(1)
f(wg)
wg.Wait()
fmt.Println("exit from main")
}
func f(wg sync.WaitGroup){
defer func(){
if e := recover(); e != nil {
fmt.Println("caught panic")
}
wg.Done()
}()
go func(){
defer func(){
if e := recover(); e != nil {
fmt.Println(e)
}
}()
panic(1)
}()
}
```
执行结果:
```
1
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc42000e23c)
/home/zenglin/Downloads/go1.8/src/runtime/sema.go:47 +0x34
sync.(*WaitGroup).Wait(0xc42000e230)
/home/zenglin/Downloads/go1.8/src/sync/waitgroup.go:131 +0x7a
main.main()
/mnt/hgfs/src/test/test.go:10 +0x6c
exit status 2
```
怎么会所有的协程都阻塞?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1739 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传