如何從「併發地圖讀取和地圖寫入」的運行時恐慌中恢復?通常延遲恢復似乎不起作用。這是爲什麼?如何從併發映射寫入中恢復?
我知道你不應該在併發環境中使用地圖,但仍然:如何在這裏恢復?
實施例:
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)
}
請添加恢復代碼。 :)
感謝您對發行說明的反應。我正在尋找那個。 –
這裏誤導的是堆棧跟蹤指向「/usr/local/go/src/runtime/panic.go:547」中的'dopanic'函數:'dopanic(0)' –
@IgorLankin因爲事情是這樣做與恐慌類似:打印堆棧跟蹤,但應用程序崩潰。你可以在''panic.go'','dopanic_m()'函數的末尾看到這個:'crash()'和'exit()'調用。 – icza