123456789101112131415161718192021222324252627282930313233 |
- //+build !go1.9
- package concurrent
- import "sync"
- // Map implements a thread safe map for go version below 1.9 using mutex
- type Map struct {
- lock sync.RWMutex
- data map[interface{}]interface{}
- }
- // NewMap creates a thread safe map
- func NewMap() *Map {
- return &Map{
- data: make(map[interface{}]interface{}, 32),
- }
- }
- // Load is same as sync.Map Load
- func (m *Map) Load(key interface{}) (elem interface{}, found bool) {
- m.lock.RLock()
- elem, found = m.data[key]
- m.lock.RUnlock()
- return
- }
- // Load is same as sync.Map Store
- func (m *Map) Store(key interface{}, elem interface{}) {
- m.lock.Lock()
- m.data[key] = elem
- m.lock.Unlock()
- }
|