package syncmap import "sync" type SyncMap struct { rw *sync.RWMutex data map[interface{}]interface{} } func New() *SyncMap { return &SyncMap{ rw:new(sync.RWMutex), data:make(map[interface{}]interface{}), } } func (sm *SyncMap) Put(k,v interface{}) { sm.rw.Lock() defer sm.rw.Unlock() sm.data[k] = v } func (sm *SyncMap) Get(k interface{}) interface{} { sm.rw.RLock() defer sm.rw.RUnlock() return sm.data[k] } func (sm *SyncMap) ForEach(fn func(interface{},interface{})) { sm.rw.RLock() defer sm.rw.RUnlock() for k,v := range sm.data { fn(k,v) } } func (sm *SyncMap) Delete(k interface{}) { sm.rw.Lock() defer sm.rw.Unlock() delete(sm.data,k) }
Go语言实现SynchronizedMap
猜你喜欢
转载自blog.csdn.net/baidu_25845567/article/details/81265451
今日推荐
周排行