diff --git a/pkg/serverconfigs/shared/data_map.go b/pkg/serverconfigs/shared/data_map.go index 2b2dd7a..4ef69b3 100644 --- a/pkg/serverconfigs/shared/data_map.go +++ b/pkg/serverconfigs/shared/data_map.go @@ -6,6 +6,7 @@ import ( "bytes" "crypto/md5" "fmt" + "sync" ) var dataMapPrefix = []byte("GOEDGE_DATA_MAP:") @@ -14,6 +15,7 @@ var dataMapPrefix = []byte("GOEDGE_DATA_MAP:") // 用来减少相同数据占用的空间和内存 type DataMap struct { Map map[string][]byte + locker sync.Mutex } // NewDataMap 构建对象 @@ -23,6 +25,8 @@ func NewDataMap() *DataMap { // Put 放入数据 func (this *DataMap) Put(data []byte) (keyData []byte) { + this.locker.Lock() + defer this.locker.Unlock() var key = string(dataMapPrefix) + fmt.Sprintf("%x", md5.Sum(data)) this.Map[key] = data return []byte(key) @@ -30,6 +34,8 @@ func (this *DataMap) Put(data []byte) (keyData []byte) { // Read 读取数据 func (this *DataMap) Read(key []byte) []byte { + this.locker.Lock() + defer this.locker.Unlock() if bytes.HasPrefix(key, dataMapPrefix) { return this.Map[string(key)] }