Sync包

sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。

注意:不应复制包含此包中定义的类型的值。

  • type Cond:条件变量,实现了一个条件变量,一个线程集合地,供线程等待或者宣布某事件的发生。

    • func NewCond(l Locker) *Cond
    • func (c *Cond) Broadcast()
    • func (c *Cond) Signal()
    • func (c *Cond) Wait()
  • type Locker:锁接口,Locker接口代表一个可以加锁和解锁的对象。

  • type Map:go中并发安全版map

    • func (m *Map) Delete(key interface{})
    • func (m *Map) Load(key interface{}) (value interface{}, ok bool)
    • func (m *Map) LoadAndDelete(key interface{}) (value interface{}, loaded bool)
    • func (m *Map) LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)
    • func (m *Map) Range(f func(key, value interface{}) bool)
    • func (m *Map) Store(key, value interface{})
  • type Mutex:互斥锁

    • func (m *Mutex) Lock()
    • func (m *Mutex) Unlock()
  • type Once:是只执行一次动作的对象。

    • func (o *Once) Do(f func())
  • type Pool:池,

    • func (p *Pool) Get() interface{}
    • func (p *Pool) Put(x interface{})
  • type RWMutex:读写互斥锁

    • func (rw *RWMutex) Lock()
    • func (rw *RWMutex) RLock()
    • func (rw *RWMutex) RLocker() Locker
    • func (rw *RWMutex) RUnlock()
    • func (rw *RWMutex) Unlock()
  • type WaitGroup:等待组,用于等待一组线程的结束。

    • func (wg *WaitGroup) Add(delta int)
    • func (wg *WaitGroup) Done()
    • func (wg *WaitGroup) Wait()

1、sync.WaitGroup

sync.WaitGroup用于等待一组线程的结束。父线程调用Add方法来设定应等待的线程的数量。每个被等待的线程在结束时应调用Done方法。同时,主线程里可以调用Wait方法阻塞至所有线程结束。

2、sync.Once 只执行一次

3、sync.Map 并发安全的map

4、sync.Pool 池

5、sync.Cond 条件变量

作者:joker.liu  创建时间:2023-04-19 17:35
最后编辑:joker.liu  更新时间:2023-04-21 14:33