Junior — Middle
Πώς υλοποιείται το μοντέλο ανταγωνιστικότητας στη γλώσσα Golang;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, το μοντέλο ανταγωνιστικότητας βασίζεται σε goroutines και κανάλια.
-
Goroutines είναι ελαφριά νήματα που ξεκινούν με τη λέξη-κλειδί
go. Επιτρέπουν την παράλληλη εκτέλεση συναρτήσεων χωρίς σημαντικό κόστος πόρων. -
Κανάλια είναι τυποποιημένα κανάλια για ανταλλαγή δεδομένων μεταξύ 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)
}
}
Σε αυτό το παράδειγμα, τρεις goroutines εκτελούν εργασία παράλληλα και στέλνουν το αποτέλεσμα σε ένα κανάλι, από το οποίο το κύριο νήμα το διαβάζει.
Έτσι, η Go απλοποιεί τον προγραμματισμό ανταγωνιστικότητας, κρύβοντας την πολυπλοκότητα των νημάτων και του συγχρονισμού.