Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε την έννοια των ελαφρών νημάτων και τις διαφορές τους από τα κανονικά νήματα εκτέλεσης;

sobes.tech AI

Απάντηση από AI

Οι ελαφριές νησίδες (goroutines στο Go) είναι μια αφαιρεση για την παράλληλη εκτέλεση κώδικα, που είναι πιο ελαφριές και αποδοτικότερες σε πόρους από τις συνηθισμένες νησίδες συστήματος.

Διαφορές:

  • Πόροι: οι goroutines καταλαμβάνουν πολύ λιγότερη μνήμη (συνήθως μερικά χιλιόμπιτ), ενώ μια νησίδα συστήματος απαιτεί πολύ περισσότερο (συνήθως megabytes).
  • Προγραμματισμός: οι goroutines προγραμματίζονται από τον προγραμματιστή του Go μέσα στη διαδικασία, όχι από το λειτουργικό σύστημα, επιτρέποντας γρήγορη εναλλαγή μεταξύ τους.
  • Δημιουργία: η εκκίνηση μιας goroutine είναι πολύ γρήγορη και φθηνή, μπορεί να δημιουργήσει χιλιάδες ή ακόμα και εκατομμύρια ταυτόχρονα.

Παράδειγμα δημιουργίας goroutine:

func sayHello() {
    fmt.Println("Γειά από goroutine")
}

func main() {
    go sayHello() // ξεκινά τη λειτουργία σε μια ξεχωριστή goroutine
    time.Sleep(time.Second) // περιμένει ώστε η goroutine να ολοκληρωθεί
}

Έτσι, οι ελαφριές νησίδες επιτρέπουν την αποδοτική χρήση του παραλληλισμού χωρίς μεγάλες επιπλέον δαπάνες.