Blinkbean
Golang-sync-SingleFlight Golang-sync-SingleFlight
本文分类《源码计划》 缓存击穿  高并发场景下,为降低数据库压力,通常通过localcache、redis等设置缓存。接到请求后先从缓存读,如果存在则直接返回,否则需要从数据库读取,然后写到缓存。   通常查询数据库在整个
2024-04-17
Golang-RWMutex Golang-RWMutex
本文分类《源码计划》 sync.RWMutex介绍 读写互斥锁,可以由多个读者或单个写者持有。RWMutex的零值是未锁定的互斥锁。 结构体及其常量 12345678910type RWMutex struct { w
2023-06-13
Golang-信号量semaphore Golang-信号量semaphore
本文分类《源码计划》 semaphore带权重的信号量在Golang中提供了一种灵活的机制,用于管理对共享资源的并发访问。通过合理使用带权重的信号量,可以更好地平衡并发访问和资源使用,从而提高程序的性能和稳定性 数据结构1
2023-02-01
Golang-sync.Cond Golang-sync.Cond
本文分类《源码计划》 Cond基本用法读写操作都由 sync.Mutex 进行并发安全的保护 定义一个互斥锁,用于保护共享数据; 创建一个sync.Cond对象,关联这个互斥锁; 在需要等待条件变量的地方,获取这个互斥锁
2023-02-01
Golang-sync.Pool使用及原理 Golang-sync.Pool使用及原理
本文分类《源码计划》 Pool​ 你想看一本书,需要的时候开始印刷,看完了就卖废品,1000个人想看就得印刷1000本书,卖1000本废品。这明显太不绿色了,你想了想如果建一个图书馆,里面放几本书,大家想看的时候去借,看
2021-07-28
Golang-Channel底层是怎么实现的? Golang-Channel底层是怎么实现的?
本文分类《源码计划》 引言channel 是 golang 的最重要的一个结构,是区别于其他高级语言的最重要的特色之一,也是 goroutine 通信必须要的要素之一。下文将基于golang1.14从channel的数据结
2021-07-19