Sobes.tech
Junior — Middle

Czy mógłbyś wyjaśnić koncepcję lekkich wątków i ich różnice od zwykłych wątków wykonawczych?

sobes.tech AI

Odpowiedź od AI

Lekki wątki (goroutines w Go) to abstrakcja do równoległego wykonywania kodu, która jest lżejsza i bardziej wydajna pod względem zasobów niż zwykłe wątki systemowe.

Różnice:

  • Zasoby: goroutines zajmują znacznie mniej pamięci (zwykle kilka kilobajtów), podczas gdy wątek systemowy wymaga znacznie więcej (zwykle megabajty).
  • Planowanie: goroutines są planowane przez planistę Go wewnątrz procesu, a nie przez system operacyjny, co pozwala na szybkie przełączanie między nimi.
  • Tworzenie: uruchomienie goroutine jest bardzo szybkie i tanie, można tworzyć tysiące, a nawet miliony jednocześnie.

Przykład tworzenia goroutine:

func sayHello() {
    fmt.Println("Cześć z goroutine")
}

func main() {
    go sayHello() // uruchamia funkcję w osobnej goroutine
    time.Sleep(time.Second) // czekamy, aby goroutine mogła się wykonać
}

W ten sposób lekkie wątki pozwalają efektywnie korzystać z paralelizmu bez dużych nakładów.