sync

sync包常用组件:

组件 描述 特性 使用场景示例
Mutex 互斥锁 读写操作都独占,防止多个 goroutine 同时访问共享资源。 需要对共享资源进行严格串行访问的场合
RWMutex 读写锁 允许多个 goroutine 同时读,但写操作独占。 读多写少的并发访问场景(读写比例显著高于 1:1 时,才能体现其性能优势)
WaitGroup 并发等待 等待一组 goroutine 执行完毕后再继续执行主逻辑。通过 Add() 计数、Done() 递减、Wait() 阻塞实现。 需要等待所有并行业务逻辑完成的场景
Once 单次执行 确保某个函数或初始化操作在高并发环境中只执行且成功执行一次。内部使用原子操作和互斥锁。 懒加载或单例模式初始化
Cond 条件变量 在特定条件满足时,唤醒等待在该条件变量上的 goroutine。必须配合 Mutex 使用。 生产者-消费者模型中的线程协作
Map 并发安全的 Map 适用于读多写少的并发场景,作为标准 map + RWMutex 的替代方案。内部使用读写分离和脏数据机制。 缓存等读多写少的应用场景
Pool 对象池 临时对象复用,减少垃圾回收 (GC) 压力。通过 Get() 获取对象,Put() 归还对象。归还的对象可能被 GC 回收。 频繁创建和销毁临时对象的场景

Once实现单例模式的代码解析


Comments