golang Cond解释

  1. 作用:
  2. 定义:
type Cond struct {
	noCopy noCopy
	L Locker
	notify notifyList
	checker copyChecker
}
func (c *Cond)NewCond(l Locker) *Cond {
	return &Cond{L:l}
}

// 等待通知
func (c *Cond)Wait(){
	//Wait()会自动释放c.L,
	//并挂起调用者的goroutine。
	//之后恢复执行,Wait()会在返回时对c.L加锁。
	c.checker.check()
	t := runtime_notifyListAdd(&c.notify)
	c.L.Unlock()
	runtime_notifyListWait(&c.notify, t)
	c.L.lock()
}

// 单发通知
func (c *Cond)Signal(){
	c.checker.check()
	runtime_notifyListNotifyOne(&c.notify)
}

// 广播通知
func (c *Cond)Broadcast(){
	c.checker.check()
	runtime_notifyListNotifyAll(&c.notify)
}

你可能感兴趣的:(golang)