Sobes.tech
Middle+

Каква е разликата между процес, нишка и горутина?

sobes.tech AI

Отговор от AI

Процесът е изолирана единица за изпълнение с собствен адресен обхват, ресурси и памет. Всеки процес работи независимо, а за обмен на данни между процесите обикновено се използва междупроцесна комуникация (IPC).

Потокът (thread) е лек поток за изпълнение вътре в процеса, който споделя паметта и ресурсите с други потоци на същия процес. Потоците позволяват изпълнението на няколко задачи паралелно в рамките на един процес.

Горутина е абстракция на лек поток в езика Go. Горутините са много по-леки по ресурси от системните потоци и се управляват от планировчика на Go runtime. Те позволяват по-лесно и по-ефективно писане на конкурентен код, отколкото с обикновени потоци.

Пример за създаване на горутина в Go:

func sayHello() {
    fmt.Println("Здравей от горутината")
}

func main() {
    go sayHello() // стартиране на горутината
    time.Sleep(time.Second) // изчакваме, за да се изпълни горутината
}