Обе ветки select готовы сразу. Реализуйте fairness: запустите select с двумя готовыми ветками 1000 раз и верните, сколько раз сработала каждая.
- Задача
- Решение
- Обсуждение
Fairness: равномерный выбор select
GolangРешение
func fairness() (ca, cb int) {
a := make(chan struct{})
b := make(chan struct{})
close(a)
close(b)
for i := 0; i < 1000; i++ {
select {
case <-a:
ca++
case <-b:
cb++
}
}
return ca, cb
}