oh-my-posh/src/concurrent_map.go
2021-09-23 23:03:46 +02:00

41 lines
740 B
Go

package main
import "sync"
type concurrentMap struct {
values map[string]interface{}
lock sync.RWMutex
}
func newConcurrentMap() *concurrentMap {
return &concurrentMap{
values: make(map[string]interface{}),
lock: sync.RWMutex{},
}
}
func (c *concurrentMap) set(key string, value interface{}) {
c.lock.Lock()
defer c.lock.Unlock()
c.values[key] = value
}
func (c *concurrentMap) get(key string) (interface{}, bool) {
c.lock.RLock()
defer c.lock.RUnlock()
if val, ok := c.values[key]; ok {
return val, true
}
return "", false
}
func (c *concurrentMap) remove(key string) {
c.lock.RLock()
defer c.lock.RUnlock()
delete(c.values, key)
}
func (c *concurrentMap) list() map[string]interface{} {
return c.values
}