我正在尝试在 Go 中实现并发安全映射。
我已经使用下面的互斥体完成了它。首先,这是使用互斥锁的好方法吗?或者我应该以不同的方式使用同步包?其次,我怎么能做同样的事情,而不是使用通道呢?
func main(){
var wg sync.WaitGroup
m := make(map[int]int)
var mu sync.Mutex
wg.Add(1)
wg.Add(1)
go func(){
defer wg.Done()
mu.Lock()
m[1] = 1
mu.Unlock()
}()
go func(){
defer wg.Done()
defer mu.Unlock()
for {
time.Sleep(1 * time.Second)
mu.Lock()
if a, ok := m[1]; ok {
fmt.Println(a)
break
}
}
}()
wg.Wait()
}
墨色风雨
相关分类