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