09 2020 档案
go中的sync.RWMutex源码解读
摘要:读写锁 前言 什么是读写锁 看下实现 读锁 RLock RUnlock 写锁 Lock Unlock 问题要论 写操作是如何阻止写操作的 写操作是如何阻止读操作的 读操作是如何阻止写操作的 为什么写锁定不会被饿死 两个读锁之间穿插了一个写锁 参考 读写锁 前言 本次的代码是基于go version 阅读全文
posted @ 2020-09-19 19:47 ZhanLi 阅读(654) 评论(0) 推荐(0) 编辑
silce的扩容,截取,使用规范总结
摘要:切片 什么是slice slice的创建使用 slice使用的一点规范 slice和数组的区别 slice的append是如何发生的 复制Slice和Map注意事项 接收 Slice 和 Map 作为入参 返回 Slice 和 Map 切片的截取 不发生扩容情况下修改新切片 发生扩容情况下修改新的切 阅读全文
posted @ 2020-09-19 00:27 ZhanLi 阅读(375) 评论(0) 推荐(0) 编辑
Go中sync.map使用小结
摘要:sync.map 前言 深入了解下 查看下具体的实现 Load Store Delete LoadOrStore 总结 流程图片 参考 sync.map 前言 Go中的map不是并发安全的,在Go1.9之后,引入了sync.Map,并发安全的map。 深入了解下 对于map,我们常用的做法就是加锁。 阅读全文
posted @ 2020-09-13 00:06 ZhanLi 阅读(10740) 评论(0) 推荐(0) 编辑
Go语言的原子操作atomic
摘要:atomic 原子操作 Go中原子操作的支持 CompareAndSwap(CAS) Swap(交换) Add(增加或减少) Load(原子读取) Store(原子写入) 原子操作与互斥锁的区别 atomic.Value Load Store 总结 参考 atomic 原子操作 原子操作即是进行过程 阅读全文
posted @ 2020-09-10 22:30 ZhanLi 阅读(14511) 评论(0) 推荐(2) 编辑