Sobes.tech
Назад к вопросам
Junior — Middle
81

Могли бы вы объяснить концепцию легковесных потоков и их отличия от обычных потоков выполнения?

Компании, где спрашивали
HyperRus

Ответ от нейросети

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 успела выполниться
}

Таким образом, легковесные потоки позволяют эффективно использовать параллелизм без больших накладных расходов.