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