Junior — Middle
Πώς μπορεί να αναγκαστεί ο προγραμματιστής Go να πραγματοποιήσει αλλαγή περιβάλλοντος σε μια άλλη goroutine;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, για την επιβολή αλλαγής πλαισίου μεταξύ goroutines, χρησιμοποιείται η συνάρτηση runtime.Gosched(). Αυτή ενημερώνει τον προγραμματιστή ότι η τρέχουσα goroutine είναι έτοιμη να παραχωρήσει τον επεξεργαστή σε άλλες goroutines, επιτρέποντάς τους να εκτελεστούν.
Παράδειγμα χρήσης:
package main
import (
"fmt"
"runtime"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine 1 -", i)
runtime.Gosched() // παραχωρούμε τον προγραμματιστή
}
}()
for i := 0; i < 5; i++ {
fmt.Println("Κύρια goroutine -", i)
runtime.Gosched() // παραχωρούμε τον προγραμματιστή
}
}
Έτσι, το runtime.Gosched() επιτρέπει ρητά σε άλλες goroutines να εκτελεστούν, χωρίς να μπλοκάρει την τρέχουσα.