Back to questions
Aston
Senior
8
Что такое горутина? В чем ее легковесность?
Companies where asked
Answer from AI
sobes.tech AI
Горутина — это легковесный поток выполнения в языке Go. В отличие от системных потоков, горутины управляются рантаймом Go и имеют очень малый начальный стек (обычно около 2 КБ), который может динамически расширяться. Это позволяет запускать тысячи и даже миллионы горутин одновременно с низкими накладными расходами по памяти и переключению контекста.
Легковесность горутин достигается за счёт:
- Малого начального размера стека, который растёт и уменьшается по необходимости.
- Управления планировщиком Go, который эффективно распределяет горутины по системным потокам.
- Отсутствия необходимости создавать отдельные системные потоки для каждой горутины.
Пример создания горутины:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Hello from goroutine")
}
func main() {
go sayHello() // запуск горутины
time.Sleep(time.Second) // даём горутине время выполниться
}
Таким образом, горутины позволяют эффективно реализовывать конкурентность и параллелизм в Go.