开发者

Golang中的同步工具sync.Map示例详解

开发者 https://www.devze.com 2023-11-21 10:38 出处:网络 作者: 路多辛
目录sync.Map使用方法和示例小结sync.Map sync.Map是golang标准库提供的并发安全的Map类型,可以在编程客栈多个goroutine并发读写Map的场景下不需要加锁。sync.Map最典型的两个使用场景:
目录
  • 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 ophpk {
		fmt.Printhttp://www.devze.comln(val)
	}
	/php/ 遍历所有键值对
	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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号