2021年3月15日

golang 切片copy复制和等号复制的区别

摘要: 结论:copy复制会比等号复制慢。但是copy复制为值复制,改变原切片的值不会影响新切片。而等号复制为指针复制,改变原切片或新切片都会对另一个产生影响。 测试复制速度: func TestArr1(t *testing.T) { var a []int for i := 0; i < 1000000 阅读全文

posted @ 2021-03-15 14:54 ExplorerMan 阅读(230) 评论(0) 推荐(0) 编辑

atomic.Value代替sync.RWMutex

摘要: 记一次性能优化,读公司项目代码时候,发现好些使用sync.RWMutext的使用场景:项目启动时候对高频数据缓存到内存缓存中,同时每隔一段时间重新写一下这个缓存(用一个全局变量): type cosCred struct { Cred []int64 sync.RWMutex } var CosCr 阅读全文

posted @ 2021-03-15 12:04 ExplorerMan 阅读(122) 评论(0) 推荐(0) 编辑

【Go】原子操作atomic.Value的使用

摘要: 概述Go的sync/atomic包提供了原子操作,支持的数据类型包括: int32, int64, uint32, uint64, uintptr, unsafe.Pointer1若需要扩大原子操作的适用范围,可以使用atomic包中的Value。利用它可以实现对任意值进行原子得存储与加载。 使用注 阅读全文

posted @ 2021-03-15 11:52 ExplorerMan 阅读(1326) 评论(0) 推荐(0) 编辑

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

摘要: 在 Go 语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存 阅读全文

posted @ 2021-03-15 11:46 ExplorerMan 阅读(137) 评论(0) 推荐(0) 编辑

导航