golang value并发安全的另一种玩法是怎样的
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章给大家分享的是有关golang value并发安全的另一种玩法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。golang
千家信息网最后更新 2025年12月01日golang value并发安全的另一种玩法是怎样的
本篇文章给大家分享的是有关golang value并发安全的另一种玩法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
golang value并发安全的另一种玩法,就是使用atomic.Value,看一段代码。
package mainimport ( "sync" "sync/atomic" "time")func main() { var m atomic.Value type Map map[string]string m.Store(make(Map)) var mu sync.Mutex read := func(key string) (val string) { m1 := m.Load().(Map) return m1[key] } insert := func(key, val string) { mu.Lock() defer mu.Unlock() m1 := m.Load().(Map) m2 := make(Map) for k, v := range m1 { m2[k] = v } m2[key] = val m.Store(m2) } go func() { for { insert("k", "v") time.Sleep(100 * time.Millisecond) } }() go func() { for { read("k") } }() time.Sleep(10 * time.Second)}相对于读写锁,少了一些锁的争抢,不过相对的,带来了一些,内存上的开销,适用于读多写少并且变量占用内存不是特别大的情况,如果用内存存储大量数据,这个并不适合,技术上主要是常见的写时复制(copy-on-write)。
另外这个还比较适合程序配置的存储,贴一段官方的栗子
var config Value // holds current server configuration// Create initial config value and store into config.config.Store(loadConfig())go func() { // Reload config every 10 seconds // and update config value with the new version. for { time.Sleep(10 * time.Second) config.Store(loadConfig()) }}()// Create worker goroutines that handle incoming requests// using the latest config value.for i := 0; i < 10; i++ { go func() { for r := range requests() { c := config.Load() // Handle request r using config c. _, _ = r, c } }()}恩,挺好玩的。
以上就是golang value并发安全的另一种玩法是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
安全
玩法
内存
就是
更多
知识
篇文章
存储
好玩
实用
代码
变量
官方
工作会
常见
开销
情况
技术
数据
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全教育的基本知识
天津常用软件开发价格表
c 查询数据库表
如何查看网络安全策略
it指的就是数据库技术
服务器内网不通外网通
wow找不到服务器
实例化和实例化数据库
格力应用软件开发
戴尔服务器管理ip地址
哈理工网络安全专业
建筑行业网络安全工作开展
网站服务器哪个厂家质量好
小学网络安全周ppt
互联网网络安全产品有哪些
2017七星彩数据库
北京市国际网络安全刑警宋杰
csgo僵尸服服务器
服务器硬盘报警声如何取消
厦门网络安全龙头
计算机网络安全漏洞
数据库中如何给一列值赋值
每次服务器所更新的口令
h2数据库无法保存数据库
长春智能网络技术诚信合作
服务器端口攻击
上海精英网络技术开发哪家好
linux服务器部署
自动化运动控制软件开发
6个月时间学网络安全