condition

20230122日志

2023年1月22日
2023
202301, condition

golang # sync.cond # type Donation struct { mu sync.RWMutex balance int } donation := &Donation{} // Listener goroutines f := func(goal int) { donation.mu.RLock() for donation.balance < goal { donation.mu.RUnlock() donation.mu.RLock() } fmt.Printf("$%d goal reached\n", donation.balance) donation.mu.RUnlock() } go f(10) go f(15) // Updater goroutine go func() { for { time.Sleep(time.Second) donation.mu.Lock() donation.balance++ donation.mu.Unlock() } }() cpu空转 type Donation struct { balance int ch chan int } donation := &Donation{ch: make(chan int)} // Listener goroutines f := func(goal int) { for balance := range donation. ...