Junior — Middle
Πώς υλοποιείται η παράλληλη εκτέλεση και ο ανταγωνισμός στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, η παράλληλη εκτέλεση και ο ανταγωνισμός υλοποιούνται μέσω των goroutines και των καναλιών.
-
Goroutines είναι ελαφριά νήματα που ξεκινούν με τη λέξη-κλειδί
go. Επιτρέπουν την εκτέλεση συναρτήσεων ασύγχρονα και παράλληλα. -
Κανάλια χρησιμοποιούνται για την επικοινωνία μεταξύ goroutines και τον συγχρονισμό δεδομένων. Επιτρέπουν τη μεταφορά τιμών με ασφάλεια μεταξύ goroutines, αποφεύγοντας καταστάσεις αγώνα.
Παράδειγμα:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("Εργάτης %d τελείωσε", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Έτσι, η Go παρέχει απλά και αποτελεσματικά μέσα για τη συγγραφή ανταγωνιστικών προγραμμάτων χωρίς πολύπλοκη διαχείριση νημάτων.