can add func (c *Cond) WaitTimeout(timeout time.Duration) bool for sync.Cond, example: ... if !this.c.WaitTimeout(10 \* time.Second) { return errors.New("time out") } ...