go 互斥锁和自旋锁的性能对比的问题

最近需要做一个本地缓存的需求,缓存数据从 redis 读取 遂考虑到在大量并发的情况下,减少 go 协程切换的消耗,考虑用自旋锁来实现 大概的思路是: - 大量并发请求 - 自旋锁上锁 - 放一个 goroutine 去 redis 读取数据到本地缓存 - 其他 goroutine 原地自旋等待缓存数据 - 读取的协程读取到数据之后解锁 但是我经过实际测试,发现用自旋锁的速度和用互斥锁的速度要差1~2个数量级,遂很不理解 之后我经过大量测试发现: - 自旋锁在...阅读全文

2022-08-18 11:59:34