當嘗試將此結(jié)構(gòu)與多個 goroutine 一起使用時,有時我會遇到以下錯誤之一:fatal error: concurrent map read and map write或者concurrent map writes閱讀此線程后,我確保在構(gòu)造函數(shù)中返回一個引用并將引用傳遞給接收者。使用它的全部代碼都在這個 github repo中type concurrentStorage struct { sync.Mutex domain string urls map[url.URL]bool}func newConcurrentStorage(d string) *concurrentStorage{ return &concurrentStorage{ domain: d, urls: map[url.URL]bool{}, }}func (c *concurrentStorage) add(u url.URL) (bool) { c.Lock() defer c.Unlock() if _, ok := c.urls[u]; ok{ return false } c.urls[u] = true return true}
為什么即使有鎖,GO 也會因“并發(fā)映射寫入”而恐慌?
12345678_0001
2023-04-24 16:03:04