Back to questions
Фабрика Решений
Иннотех
Mail.ru
Selectel
Junior — Middle
95
Как отличить горутину от обычного потока выполнения в операционной системе?
Companies where asked
Lamoda Tech
Самокат Тех
Маском
HyperRus
Answer from AI
sobes.tech AI
Горутина — это легковесный поток выполнения, управляемый рантаймом Go, а не операционной системой. Основные отличия:
- Легковесность: Горутины занимают гораздо меньше памяти (обычно несколько килобайт стека), в то время как системные потоки требуют мегабайты.
- Планирование: Горутины планируются Go-рантаймом (M:N планировщик), а не ОС. Это позволяет запускать тысячи горутин на нескольких системных потоках.
- Создание: Создать горутину очень дешево — достаточно написать
go функция(), тогда как создание системного потока дороже по ресурсам.
Пример создания горутины:
func sayHello() {
fmt.Println("Hello from goroutine")
}
func main() {
go sayHello() // запускается горутина
time.Sleep(time.Second) // ждем, чтобы горутина успела выполниться
}
Таким образом, горутины — это абстракция над потоками ОС, оптимизированная для конкурентного программирования в Go.