Иногда лучший мьютекс — тот, которого нет. Реализуйте ShardedCounter: каждая горутина пишет в свою ячейку без блокировок, Total — сумма ячеек.
- Задача
- Решение
- Обсуждение
ShardedCounter: счётчик на ячейках
GolangРешение
func (c *ShardedCounter) Inc(i int) {
c.cells[i]++
}
func (c *ShardedCounter) Total() int64 {
var sum int64
for _, v := range c.cells {
sum += v
}
return sum
}