如何从“并发地读写映射”中的运行时恐慌中恢复?通常的defer和recover似乎不起作用。为什么会这样?
我知道在并发上下文中不应该使用映射,但是:在这里如何恢复?
示例:
package main
import "time"
var m = make(map[string]string)
func main() {
go func() {
for {
m["x"] = "foo"
}
}()
go func() {
for {
m["x"] = "foo"
}
}()
time.Sleep(1 * time.Second)
}
请添加恢复代码。 :)
dopanic
的函数:dopanic(0)
。 - Igor Lankinpanic.go
文件中看到这一点,在dopanic_m()
函数的末尾:调用了crash()
和exit()
。 - icza