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.