Как реализовать concurrent-safe counter?

Junior
235 просмотров
AFK Offer AI

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

Следующий вопрос

Что такое god object?