会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
绵羊的微笑
博客园
首页
新随笔
订阅
管理
2021年12月1日
Golang 内存对齐和伪共享False Sharing
摘要: 内存对齐有多大作用? 为了减少cpu的访存次数,提高cpu的吞吐量,cpu并不会逐个字节的访问内存,而是以字长(word size)为单位访问。比如 64 位架构的 CPU ,字长为 8 字节,那么 CPU 访问内存的单位也是 8 字节。但是,如果被访问的数据在内存中的起始地址不是字长的倍数的话,反
阅读全文
posted @ 2021-12-01 01:28 绵羊的微笑
阅读(902)
评论(0)
推荐(1)
2021年11月27日
Golang sync.WaitGroup 源码分析
摘要: 结构 // WaitGroup类型的数据不可以被复制 type WaitGroup struct { noCopy noCopy // 用来禁止当前结构的类型复制 // state1 是 64-bit变量: // 高32位是计数器counter,也就是活跃的g的个数 // 低32位表示因执行Wait
阅读全文
posted @ 2021-11-27 02:26 绵羊的微笑
阅读(107)
评论(0)
推荐(0)
2021年11月26日
Golang sync.Pool 源码详解【待完善】
摘要: Go自带垃圾回收器,对于大部分的内存回收工作都可以放心的交给它来完成,但是,正如某位大明白所说,免费的东西必定早在暗中标好了价格。 例如某公司搞了个web服务器,处理一个HTTP请求,对应的会创建多个对象,待到处理完请求,GC就会把这些个对象统统给回收了。作为单身汪当然对此种浪费对象的行为表示强烈反
阅读全文
posted @ 2021-11-26 20:37 绵羊的微笑
阅读(134)
评论(0)
推荐(0)
Golang sync.RWMutex 源码分析
摘要: 结构 type RWMutex struct { w Mutex // 写操作的互斥锁 writerSem uint32 // 写信号量,表示写者等待读者读完 readerSem uint32 // 读信号量,表示读者等待写者写完 readerCount int32 // 读者计数器 readerW
阅读全文
posted @ 2021-11-26 05:36 绵羊的微笑
阅读(167)
评论(0)
推荐(0)
Golang sync.Mutex 源码分析
摘要: Mutex结构 type Mutex struct { state int32 sema uint32 } state 记录锁的状态,转换为二进制前29位表示等待锁的goroutine数量,后三位从左到右分别表示当前g 是否已获得锁、是否被唤醒、是否正饥饿 sema 充当临界资源,其地址作为这个锁在
阅读全文
posted @ 2021-11-26 00:49 绵羊的微笑
阅读(167)
评论(0)
推荐(0)
公告