私は、次のコードを実行すると:ゴーマップは並行性テストに失敗した
import (
"log"
"sync"
"testing"
"time"
)
func TestConcurrency(t *testing.T) {
var mutex sync.RWMutex
dictionary := make(map[interface{}]interface{})
go func() {
var value interface{}
for {
go func() {
mutex.Lock()
dictionary["Key"] = ""
mutex.Unlock()
}()
go func() {
mutex.RLock()
value = dictionary["Key"]
mutex.RUnlock()
}()
}
log.Println(value)
}()
}
使用:
go test -race fileName.go
それは、その結果を:
Found 1 data race(s)
どのように私はこの問題を解決することができますか?
私は、多くの同時書き込みと読み取りを行っています。