go 并发赋值安全性
32/64位机器读写占用空间小于或等于32/64位的变量是原子操作,超过时属于非原子操作。
安全的赋值类型
基本数据类型:字节型、布尔型、整型、浮点型、字符型
其他数据类型:指针、函数
不安全的赋值类型
基本数据类型:复数型、字符串
其他数据类型:数组、切片、字典、通道、接口、结构体
可以通过atomic.Value来保证并发赋值的安全性。
package mainimport ("errors""fmt""sync/atomic"
)type Stu struct {A intB int
}func main() {var v atomic.Valuev.Store(Stu{A: 1,B: 2,})stu, ok := v.Load().(Stu)if !ok {panic(errors.New("type not Stu"))}// 1 2fmt.Printf("%d %d", stu.A, stu.B)
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/940430.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!