专栏名称: Go语言中文网
Golang爱好者社区,这里有精选的网站上数千篇优秀文章供你学习,内容涵盖Golang基础系列教程、实战教程等优秀开源项目实践,同时会分享职场经验。每周获取Golang一周资讯等值得关注的内容
目录
相关文章推荐
今天看啥  ›  专栏  ›  Go语言中文网

Go 语言标准库中 atomic.Value 的前世今生

Go语言中文网  · 公众号  · go  · 2021-02-16 20:30
点击上方蓝色“Go语言中文网”关注,每天一起学 Go在 Go 语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存储(Store)和加载(Load)任意类型的值。历史起源 我在golang-dev邮件列表中翻到了14年的这段讨论[1],有用户报告了encoding/gob包在多核机器上(80-core)上的性能问题,认为encoding/gob之所以不能完全利用到多核的特性是因为它里面使用了大量的互斥锁(mutex),如果把这些互斥锁换成用atomic.LoadPointer/StorePointer来做并发控制,那性能将能提升20倍。针对这 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照