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.