您现在的位置是:首页 >技术交流 >Golang中的同步工具sync.Map详解网站首页技术交流
Golang中的同步工具sync.Map详解
简介Golang中的同步工具sync.Map详解
sync.Map
sync.Map是Golang标准库提供的并发安全的Map类型,可以在多个goroutine并发读写Map的场景下不需要加锁。sync.Map最典型的两个使用场景:
- 写少读多的场景,特别是只写一次,读取多次的场景,例如缓存;
- 当多个程序读取、写入和修改的场景。
sync.Map 提供如下几个方法:
- Store(key , value any):向Map中存储键值对
- Load(key any):根据键获取值
- Delete(key any):删除键值对
- LoadAndDelete(key any):获取并删除键值对
- LoadOrStore(key, value any) :如果key已经存在,返回对应值,如果不存在,存储键值对
- Range(f func(key, value any) bool):遍历Map中的键值对
使用方法和示例
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
// 存储键值对
m.Store("key", "value")
// 根据键获取值
val, ok := m.Load("key")
if ok {
fmt.Println(val)
}
// 遍历所有键值对
m.Range(func(k, v interface{}) bool {
fmt.Println("key:", k, ",value:", v)
return true
})
// 删除键值对
m.Delete("key")
}
小结
sync.Map是Golang中非常实用非常强大的同步工具,可用于实现并发安全的Map数据结构,在并发访问的场景中可以提高程序的可靠性和性能。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。