Sobes.tech
Junior — Middle

Τι καθιστά τις goroutines πιο αποδοτικές σε σύγκριση με τα παραδοσιακά νήματα;

sobes.tech AI

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

Οι goroutines στο Go είναι πιο αποδοτικές σε σύγκριση με τα παραδοσιακά νήματα (threads) χάρη σε αρκετά βασικά χαρακτηριστικά:

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

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

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

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