- 收录文章
- 100 篇文字被发现
- 文章访问
- 109 次从这里出发阅读
- 博客访问
- 1 次前往作者站点
- 最近更新
- 04.01 2024年
FROM THIS BLOG
最近文章
sync.Map Code Reading
从内部底层实现来说,sync.Map 通过 entry 类型将 map 的变化和元素的变化进行隔离的同时, 还保证了底层数据的复用 (read map 和 dirty map 指向同一个 entry), read, dirty 2 个字段加原子操作的紧密配...
sync.Cond Code Reading
sync.Cond 不是一个常用的同步机制,在条件变量长时间无法满足时,sync.Cond 能够让出处理器的使用权,和单纯使用 for {} 进行无限等待相比,可以提高 CPU 的利用率。
sync.WaitGroup Code Reading
sync.RWMutex Code Reading
如果一个 goroutine 持有了读锁进行操作,此时其他的 goroutine 可能尝试获取写锁 (参与竞争),那么在读锁被释放之前,不会有其他 goroutine 获取到读锁 (避免竞争写锁的 goroutine 被饿死), 一个 gorout...
sync.Once Code Reading
sync.Once 可以保证某段程序在运行期间的只执行一次,典型的使用场景有初始化配置, 数据库连接等,那么它的内部是如何实现的呢?
sync.Mutex Code Reading
互斥锁可以在两种模式下操作:正常模式和饥饿模式,正常模式的性能要好很多,因为 goroutine 可以连续多次获得互斥锁,即使存在阻塞的 goroutine, 与此同时,饥饿模式是防止尾部的 goroutine 被饿死的重要...
Go 无锁编程
锁是一种常见的同步机制,用来解决多个线程同时访问共享资源导致的数据竞争问题。在高并发场景下,锁的使用可能会成为性能瓶颈,因为线程需要频繁地加锁和释放锁,这会增加上下文切换开销并降低程序的吞吐...
sync/atomic Code Reading
sync/atomic 包提供了原子同步操作原语,整个操作过程无需加锁,也不会产生 goroutine 上下文切换。
goroutine 交替打印奇偶数
使用两个 goroutine 交替并且顺序地打印数字 1…10, 要求其中一个 goroutine 打印奇数,另一个 goroutine 打印偶数。
GODEBUG
GODEBUG 环境变量可以控制程序运行时的调度信息输出,方便开发者了解程序运行内部细节。
Go 并发模式
Go 语言常用的并发模式代码模板,已更新。
UUID 通用技术选型
分布式唯一 ID 是指在分布式系统中生成的全局唯一标识符。在分布式系统中,由于多个节点同时操作数据可能会导致数据冲突或者重复,因此需要为每个数据对象赋予一个唯一的标识符,以便在系统范围内进行区分...