Sobes.tech
Junior

Τι είναι οι goroutines;

sobes.tech AI

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

Ελαφριά νήματα εκτέλεσης, που διαχειρίζεται το περιβάλλον εκτέλεσης του Go. Δημιουργούνται με τη λέξη-κλειδί go πριν από την κλήση μιας συνάρτησης.

Κύχα χαρακτηριστικά:

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

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

package main

import (
	"fmt"
	"time"
)

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

func main() {
	go sayHello() // Εκτελεί το sayHello ως goroutine
	fmt.Println("Γειά από τη βασική λειτουργία!")
	time.Sleep(1 * time.Second) // Για να μην τερματίσει νωρίτερα η βασική λειτουργία από το goroutine
}

Σύγκριση με νήματα:

Χαρακτηριστικό Goroutines του Go Νήματα του λειτουργικού συστήματος
Διαχείριση Περιβάλλον εκτέλεσης του Go Λειτουργικό σύστημα
Κατανάλωση μνήμης Χαμηλή, δυναμική στοίβα Υψηλή, σταθερή στοίβα
Δημιουργία Γρήγορη Αργή
Προγραμματισμός Συνεργατικός Προληπτικός
Συγχρονισμός Κάναλες, πακέτο sync Μηχανισμοί mutex, σεμάφορων OS