Урок 103 · Задача 1

Metrics: инвариант пары под мьютексом

Пара total/count обновляется атомиками по отдельности, и среднее «прыгает». Реализуйте Metrics: Record и Average — оба под одним мьютексом.

00:00:00
Показать решение
GolangРешение
func (m *Metrics) Record(x int64) {
	m.mu.Lock()
	defer m.mu.Unlock()
	m.total += x
	m.count++
}

func (m *Metrics) Average() int64 {
	m.mu.Lock()
	defer m.mu.Unlock()
	if m.count == 0 {
		return 0
	}
	return m.total / m.count
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки