В чем разница между процессами, потоками и Green Threads

«В чем разница между процессами, потоками и Green Threads» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Процессы — изолированные экземпляры программ с собственным адресным пространством. Потоки (threads) — легковесные потоки выполнения внутри процесса, разделяющие память. Green Threads — пользовательские потоки, управляемые рантаймом (не ОС), как в ранних версиях Go (до 1.14).

Пример с goroutine (аналог Green Thread в Go):

func main() {
    go func() { // goroutine
        fmt.Println("Hello from goroutine")
    }()
    time.Sleep(time.Millisecond) // даем время на выполнение
}

Ключевые отличия:

  • Процессы: тяжелые, изолированные.
  • Потоки: легче, разделяют память, зависят от ОС.
  • Green Threads: управляются рантаймом, более эффективны для concurrency.

В Go сейчас используются гибридные потоки (goroutine + OS threads).