golang value并发安全的另一种玩法是怎样的
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇文章给大家分享的是有关golang value并发安全的另一种玩法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。golang
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
企业提高网络安全术语
中软国际网络安全考试题及答案
桂林软件开发工资多少钱
软件开发环境fortran
湘潭快速软件开发哪家好
笑话视频软件开发
免费web服务器网站含羞草
3台服务器如何实现
信息工程的网络技术
中钞科堡面试软件开发
csfdb数据库
梦幻西游五开服务器怎么选
如何建立账号管理服务器
互联网科技公司反腐
数据库软考中级内容
信息通信网络安全员
用友网络技术怎么样
网络安全法 合规风险
网络安全股掀起涨停潮
服务器无法加字幕
RS服务器 IXP
服务器名称和计算机名称是一个
数据库中插入图片代码
红河州党政数据库
中国最大网络安全系统
经济技术开发区网络技术
移动服务器密码怎么查询
安卓蓝牙打印机软件开发
云服务器登录安卓app
vs连接数据库方式