Sobes.tech
Junior — Middle

Πώς υλοποιείται η παράλληλη και σειριακή επεξεργασία εργασιών στη γλώσσα Go;

sobes.tech AI

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

Στο Go, η παράλληλη επεξεργασία εργασιών υλοποιείται με τις goroutines, που είναι ελαφριά νήματα που ξεκινούν με τη λέξη-κλειδί go. Μια goroutine μπορεί να ξεκινήσει για να εκτελέσει μια λειτουργία ασύγχρονα, και θα εκτελείται παράλληλα με άλλες goroutines.

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

Παράδειγμα παράλληλης επεξεργασίας:

package main

import (
    "fmt"
    "time"
)

func εργασία(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 εργασία(i) // ξεκινά μια goroutine
    }
    time.Sleep(2 * time.Second) // περιμένει την ολοκλήρωση των goroutines
}

Σε αυτό το παράδειγμα, τρεις εργασίες ξεκινούν παράλληλα. Αν αφαιρεθεί το go, οι εργασίες θα εκτελεστούν σειριακά.

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