Cond

Cond #

type Cond struct {

	// L is held while observing or changing the condition
	L Locker
	// contains filtered or unexported fields
}

// Broadcast 会唤醒所有等待 c 的 goroutine
func (c *Cond) Broadcast()

// Signal 只唤醒 1 个等待 c 的 goroutine
func (c *Cond) Signal()

// Wait() 会自动释放 c.L,并挂起调用者的 goroutine。之后恢复执行,Wait() 会在返回时对 c.L 加锁。
// 除非被 Signal 或者 Broadcast 唤醒,否则 Wait() 不会返回
func (c *Cond) Wait()
  • 条件
    • 一个条件一定要有一个信号
  • 信号
    • wait 等待的是信号
    • signal 发送的是信号
    • 一个信号可以对应到多个条件

sync.Cond vs sync.Mutex #

  • Mutex
    • one goroutine for each write and read
  • Cond
    • multiple readers wait for the shared resources to be available

参考 #


本文访问量

本站总访问量

本站总访客数 人次