go标准库之sync

golang  

go标准库之sync

sync 包中提供了 7个类型:

  • Cond 用来做多任务控制,也可以对多个工作worker进行广播开始工作
    官方 Cond 实现了条件变量,即Go程等待的汇合点或宣布一个事件的发生。
  • Locker 就是可以被锁定并解锁的对象
  • Mutex 是一个互斥锁。
    Mutex 可作为其它结构的一部分来创建;Mutex 的零值即为已解锁的互斥体。
  • Once 只执行一个动作的对象,多个goroutine 时 只执行一次这个对象
  • Pool 对象池, sync.Pool是可伸缩的,并发安全的。其大小仅受限于内存的大小,可以被看作是一个存放可重用对象的值的容器
    1. Golang的对象池严格意义上来说是一个临时的对象池,
    2. 适用于储存一些会在goroutine间分享的临时对象。
    3. 主要作用是减少GC,提高性能。
    4. Golang中最常见的使用场景是fmt包中的输出缓冲区。
  • RWMutex 是一个读写锁
    该锁可以被任意多个读取器或单个写入器所持有.RWMutex可作为其他结构的一部分来创建;RWMutex 的零值即为已解锁的互斥体
  • WaitGroup 等待一组Go程的结束.主Go程Add设置等待的Go程数.每个Go程都会运行,并结束时调用 Done.同时,Wait可被用于阻塞,直到所有Go程结束
    1. sync 包提供了互斥锁这类的基本的同步原语.
    2. Once WaitGroup 之外的类型大多用于底层库的例程。
    3. 更高级的同步操作通过信道与通信进行。


评论 0

发表评论

Top