Sobes.tech
Junior — Middle

Εξηγήστε την έννοια του ανταγωνισμού στη γλώσσα προγραμματισμού Go και τον ρόλο της στην ανάπτυξη παράλληλων εφαρμογών

sobes.tech AI

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

Στη γλώσσα Go, ο ανταγωνισμός (concurrency) είναι η ικανότητα ενός προγράμματος να εκτελεί πολλαπλές εργασίες ταυτόχρονα, αξιοποιώντας αποτελεσματικά τους πόρους της CPU. Στη γλώσσα Go, αυτό επιτυγχάνεται μέσω των goroutines, που είναι ελαφριά νήματα που ξεκινούν με τη λέξη-κλειδί go.

Ο ανταγωνισμός επιτρέπει τη συγγραφή παράλληλων εφαρμογών, όπου διαφορετικά τμήματα του κώδικα εκτελούνται ταυτόχρονα, αυξάνοντας την απόδοση και την ανταπόκριση των προγραμμάτων.

Για συγχρονισμό και ανταλλαγή δεδομένων μεταξύ των goroutines, χρησιμοποιούνται κανάλια (channels), που παρέχουν ασφαλή επικοινωνία χωρίς ρητές μπλοκαρίσματα.

Παράδειγμα:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Εργάτης %d ξεκινά\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Εργάτης %d τελειώνει\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // εκκίνηση goroutine
    }
    time.Sleep(2 * time.Second) // αναμονή για ολοκλήρωση goroutines
}

Σε αυτό το παράδειγμα, τρεις goroutines εκτελούνται ταυτόχρονα, δείχνοντας τον ανταγωνισμό στη Go.