Sobes.tech
Junior — Middle

Ποια είναι τα πλεονεκτήματα της χρήσης των goroutines σε σύγκριση με τις νησίδες (threads);

sobes.tech AI

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

Οι goroutines στο Go είναι ελαφριά νήματα που διαχειρίζεται το runtime του Go, όχι το λειτουργικό σύστημα. Τα πλεονεκτήματά τους σε σύγκριση με τα κλασικά νήματα:

  • Μικρότερη κατανάλωση μνήμης: Οι goroutines καταλαμβάνουν λίγα kilobytes μνήμης, ενώ τα νήματα — megabytes.
  • Γρήγορη δημιουργία και εναλλαγή: Η εκκίνηση και η εναλλαγή μεταξύ goroutines γίνεται πολύ πιο γρήγορα.
  • Απλότητα συγχρονισμού: Το Go παρέχει κανάλια για ασφαλή ανταλλαγή δεδομένων μεταξύ goroutines, διευκολύνοντας τον ανταγωνιστικό προγραμματισμό.
  • Κλιμάκωση: Μπορείτε να ξεκινήσετε χιλιάδες ή ακόμα και εκατομμύρια goroutines ταυτόχρονα.

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

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

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