• Задача
  • Решение
  • Обсуждение

Fairness: равномерный выбор select

Обе ветки select готовы сразу. Реализуйте fairness: запустите select с двумя готовыми ветками 1000 раз и верните, сколько раз сработала каждая.

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
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки