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
最新推荐文章于 2024-04-16 10:58:46 发布