|
Основной механизм управления состоянием в Go —
взаимодействие через каналы. Мы видели это, например,
в примере с пулом воркеров. Однако есть
и другие способы управления состоянием. Здесь мы
рассмотрим использование пакета |
|
![]()
|
|
|
|
|
|
|
Используем атомарный целочисленный тип для представления нашего (всегда положительного) счётчика. |
|
|
WaitGroup поможет нам дождаться завершения всех горутин. |
|
|
Запустим 50 горутин, каждая из которых увеличит счётчик ровно 1000 раз. |
|
|
Для атомарного увеличения счётчика используем |
|
|
Ждём завершения всех горутин. |
|
|
Здесь ни одна горутина не пишет в ‘ops’, но с помощью
|
|
|
Мы ожидаем получить ровно 50 000 операций. Если бы
мы использовали обычное (неатомарное) целое число и
увеличивали его с помощью |
|
|
Далее рассмотрим мьютексы — ещё один инструмент для управления состоянием. |
Далее: Мьютексы.