Sobes.tech
Junior — Middle

Можете ли да обясните концепцията за леки нишки и техните разлики от обикновените нишки за изпълнение?

sobes.tech AI

Отговор от AI

Леките потоци (goroutines в Go) са абстракция за паралелно изпълнение на код, която е по-лека и по-ефективна по ресурси от обикновените системни потоци.

Разлики:

  • Ресурси: goroutines заемат много по-малко памет (обикновено няколко килобайта), докато системният поток изисква много повече (обикновено мегабайти).
  • Планиране: goroutines се планират от планировчика на Go вътре в процеса, а не от операционната система, което позволява бързо превключване между тях.
  • Създаване: стартирането на goroutine е много бързо и евтино, може да се създадат хиляди или дори милиони едновременно.

Пример за създаване на goroutine:

func sayHello() {
    fmt.Println("Здравей от goroutine")
}

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

По този начин, леките потоци позволяват ефективно използване на паралелизма без големи разходи.