Как работает mmap в Go?

Senior
243 просмотров
AFK Offer AI

В Go mmap вызывается через syscall.Mmap(fd, offset, length, prot, flags). Возвращает []byte, отображённый на файл. Читаешь слайс — ОС автоматически подгружает данные с диска. Записываешь — изменения попадают в файл (с MAP_SHARED). Важно: Go GC не знает про mmap-память, поэтому она не учитывается в GOGC. Нужно явно вызвать syscall.Munmap для освобождения. Осторожно с boundary: если файл 100 байт, а ты читаешь за пределами — SIGBUS. Используется для БД-движков, поисковых индексов, work with large files.

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

Задача: найдите баг в concurrent коде с общей переменной без синхронизации