Golang学习笔记-sync包

  • sync包使用

    Cond:实现了条件变量,用于等待gorouting或者声明事件的发生。Cond在第一次使用后不可以被拷贝
    Locker:一个接口,包含Lock()和Unlock()两个方法,用于代表一个能被加锁和解锁的对象。
    Map:一个协程安全的map,map[interface{}]interface{},key和value均可以是任意类型。
    Mutex:互斥锁
    Once:当某个action仅希望被执行1次时使用sync.Once
    Pool:临时对象池
    RWMutex:读写互斥锁
    WaitGroup:用于等待一组gorouting完成

    Cond

    Cond包含如下几个方法:

    • NewCond(l Locker) *Cond
      用于创建一个Cond对象,需要传入实现了Locker接口的对象,比如Mutex
    • func(c *Cond) Broadcast()
      用于唤醒全部等待Cond条件的gorouting
    • func(c *Cond) Signal()
      用于唤醒一个等待Cond条件的gorouting
    • func(c *Cond) Wait()
      等待通知,gorouting阻塞等待

    Locker

    一个interface,声明了Lock()、Unlock()两个接口

    Map

    Map 类型是专门的。大多数代码应该使用带有单独锁定或协调的普通 Go 映射,以获得更好的类型安全性并更容易维护其他不变量以及映射内容。

    Map的使用场景

    • 当给定键的条目只写入一次但读取多次时,如在只会增长的缓存中
    • 当多个 goroutine 读取、写入和覆盖不相交的键集的条目。
      在这两种情况下,与使用单独的 M

你可能感兴趣的:(Golang)