Ответ
Go runtime — это часть языка, отвечающая за управление памятью (сборщик мусора), горутинами, планировщиком и низкоуровневыми операциями.
Ключевые аспекты:
- Goroutines — легковесные потоки, управляемые runtime (не ОС).
- Scheduler — использует M:N модель (горутины на системных потоках).
- GC — concurrent mark-and-sweep, минимизирующий паузы.
- Memory management — автоматическое выделение/освобождение.
Пример работы с runtime:
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println("GOMAXPROCS:", runtime.GOMAXPROCS(0)) // Текущее кол-во потоков
go func() { fmt.Println("Goroutine") }()
runtime.Gosched() // Дать шанс другим горутинам
}
Важно: Прямое взаимодействие с runtime (например, runtime.KeepAlive) требуется редко — большинство задач абстрагировано.