Перейти к содержимому
Задача · Горутины и каналы · урок 12 из 13

Задача: безопасный счётчик

Напишите тип Counter — счётчик, которым могут одновременно пользоваться несколько горутин. Метод func (c *Counter) Inc() увеличивает счётчик на единицу, а func (c *Counter) Value() int возвращает его текущее значение. Поля структуры Counter выберите сами.

  • var c Counter, затем c.Value() → 0
  • c.Inc() три раза, затем c.Value() → 3
  • var e Counter, 100 горутин вызывают e.Inc() по 100 раз каждая, затем e.Value() → 10000

Ограничения: нулевое значение Counter готово к работе и равно 0; Inc и Value вызывают из разных горутин одновременно; у каждого счётчика своё значение.

Проверка запускает тесты с детектором гонок: если несколько горутин меняют поле без синхронизации, решение не пройдёт.

Не добавляйте лишних импортов, если в задаче это прямо не сказано.

counter.go — go
go · строк: 9
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом