Три варианта. Первый — sync.Mutex: Lock(), counter++, Unlock(). Второй — atomic: atomic.AddInt64(&counter, 1). Третий — канал: горутина-владелец читает из канала инкременты. Atomic самый быстрый для простого счётчика, mutex — для сложной логики (инкремент + чтение атомарно), канал — если хочешь Go-style. Для метрик в продакшене — expvar или prometheus counter. Типичная ошибка — counter++ без синхронизации, что приводит к race condition.
Как реализовать concurrent-safe counter?
Junior
235 просмотровAFK Offer AI
Что такое god object?