Sobes.tech
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 να εκτελεστούν, χωρίς να μπλοκάρει την τρέχουσα.