Как работает map grow?

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

Когда load factor map-ы превышает 6.5 (в среднем 6.5 элементов на bucket), запускается рост. Go выделяет новый массив бакетов в 2 раза больше. Но не копирует всё сразу — используется incremental growth. При каждой операции записи или удаления рантайм переносит несколько бакетов из старого массива в новый. Пока миграция идёт, обе таблицы живы — при чтении проверяются обе. Это предотвращает длинные паузы на resize, но читающий код должен проверить oldbuckets если текущий бакет ещё не мигрирован.

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

Как отправить JSON response?