Задача · Горутины и каналы · урок 12 из 13
Задача: безопасный счётчик
Напишите тип Counter — счётчик, которым могут одновременно пользоваться несколько горутин. Метод func (c *Counter) Inc() увеличивает счётчик на единицу, а func (c *Counter) Value() int возвращает его текущее значение. Поля структуры Counter выберите сами.
var c Counter, затемc.Value()→0c.Inc()три раза, затемc.Value()→3var e Counter, 100 горутин вызываютe.Inc()по 100 раз каждая, затемe.Value()→10000
Ограничения: нулевое значение Counter готово к работе и равно 0; Inc и Value вызывают из разных горутин одновременно; у каждого счётчика своё значение.
Проверка запускает тесты с детектором гонок: если несколько горутин меняют поле без синхронизации, решение не пройдёт.
Не добавляйте лишних импортов, если в задаче это прямо не сказано.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.