sync.Map использует две внутренние map: read (atomic, без блокировки) и dirty (под mutex). Чтение идёт из read — O(1) без блокировки. При miss читается из dirty и после N промахов dirty промоутится в read (amortized O(1)). Запись идёт в dirty. Этот двухфазный подход делает чтение очень дешёвым ценой более дорогой записи. Хорошо работает для read-heavy нагрузки.
Что такое sync.Map amortized operations?
Middle+
148 просмотровAFK Offer AI
Что выведет: s := make([]int, 0, 5); s = append(s, 1,2,3); s2 := s[1:2]; fmt.Println(cap(s2))?