Golang中的同步工具sync.Map示例详解
更新时间:2023年05月22日 15:09:56 作者:路多辛
sync.Map是Golang标准库提供的并发安全的Map类型,可以在多个goroutine并发读写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数据结构,在并发访问的场景中可以提高程序的可靠性和性能。
到此这篇关于Golang中的同步工具sync.Map详解的文章就介绍到这了,更多相关Golang sync.Map内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
通过函数如何将golang float64 保留2位小数(方法汇总)
这篇文章主要介绍了通过函数将golang float64保留2位小数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-08-08golang开发 gorilla websocket的使用示例详解
这篇文章主要介绍了golang开发 gorilla websocket的使用示例详解,介绍了websocket的简单使用,我们使用的版本是1.3.0,具体操作方法跟随小编一起学习吧2024-05-05Go语言中使用 buffered channel 实现线程安全的 pool
这篇文章主要介绍了Go语言中使用 buffered channel 实现线程安全的 pool,因为Go语言自带的sync.Pool并不是很好用,所以自己实现了一线程安全的 pool,需要的朋友可以参考下2014-10-10
最新评论