Что такое sync.Map amortized operations?

Middle+
148 просмотров
AFK Offer AI

sync.Map использует две внутренние map: read (atomic, без блокировки) и dirty (под mutex). Чтение идёт из read — O(1) без блокировки. При miss читается из dirty и после N промахов dirty промоутится в read (amortized O(1)). Запись идёт в dirty. Этот двухфазный подход делает чтение очень дешёвым ценой более дорогой записи. Хорошо работает для read-heavy нагрузки.

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

Что выведет: s := make([]int, 0, 5); s = append(s, 1,2,3); s2 := s[1:2]; fmt.Println(cap(s2))?