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