Ответ
Горутина — это легковесный поток выполнения в Go, управляемый рантаймом, а не ОС напрямую.
- Соотношение: Горутины мультиплексируются на небольшое количество ОС-тредов (обычно равное количеству CPU ядер). Планировщик Go распределяет горутины по тредам.
- Преимущество: Переключение между горутинами дешевле, чем между тредами ОС, так как происходит в пользовательском пространстве.
- Блокировка: Если горутина блокируется (например, на I/O), планировщик запускает другие горутины на этом же треде.
func main() {
go func() { // горутина
fmt.Println("Hello from goroutine")
}()
time.Sleep(time.Millisecond) // даем горутине время выполниться
}