golang sync.Cond
package main import ( "fmt" "sync" "time" ) func main() { wait := sync.WaitGroup{} locker := new(sync.Mutex) cond := sync.NewCond(locker) for i := 0; i < 3; i++ { go func(i int) { defer wait.Done() wait.Add(1) cond.L.Lock() fmt.Println("Waiting start...") cond.Wait() fmt.Println("Waiting end...") cond.L.Unlock() fmt.Println("Goroutine run. Number:", i) }(i) } time.Sleep(2e9) cond.L.Lock() cond.Signal() cond.L.Unlock() time.Sleep(2e9) cond.L.Lock() cond.Signal() cond.L.Unlock() time.Sleep(2e9) cond.L.Lock() cond.Signal() cond.L.Unlock() wait.Wait() }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。