1. sync
  2. sync.WaitGroup 计数信号量
  3. sync.Mutex (互斥锁),性能不如读写锁
  4. sync.RWMutex 锁(读写锁)
  5. sync.Cond 条件锁 多个例程执行,某个执行检查是否满足条件,不满足等待 等待:wait方法
  6. 其他例程,当可能产生等待例程条件重新满足,通知等待例程。通知:singal/broadcase方法
  7. sync.Map 线程安全的map,方法有限,可以用 map类型+Mutex/RWMutex来替代实现。
  8. sync.Once 保证一个逻辑只执行一次
  9. sync.Pool 线程池,连接池等等
  10. 对象池,从池中获取对象,当池中无可用对象,创建并返回,当使用完成会放入池中。
Once函数只执行一次

示例:

  1. once:=&sync.Once{}
  2. once.Do(task) //函数只运行一次
  3. once.Do(taskA)
  4. once.Do(task) //不运行
Pool

示例:

  1. intPool :=&sync.Pool{
  2. New: func() interface{}{
  3. fmt.Println("new")
  4. return 1
  5. }
  6. }
文档更新时间: 2021-08-22 14:29   作者:张尚