Junior — Middle
Ποιος είναι ο κύριος ρόλος του τύπου sync.Once στον συγχρονισμό νημάτων στο Go;
sobes.tech AI
Απάντηση από AI
Ο τύπος sync.Once στη Go χρησιμοποιείται για να διασφαλίσει ότι ένα συγκεκριμένο τμήμα κώδικα θα εκτελεστεί ακριβώς μία φορά, ακόμη και αν καλείται από πολλαπλά νήματα (goroutines).
Ο κύριος ρόλος του είναι η ασφαλής αρχικοποίηση πόρων (π.χ. δημιουργία singleton), για να αποφευχθούν συνθήκες ανταγωνισμού και επαναληπτική εκτέλεση.
Παράδειγμα χρήσης:
var once sync.Once
var config *Config
func loadConfig() {
config = &Config{/* αρχικοποίηση */}
}
func GetConfig() *Config {
once.Do(loadConfig) // loadConfig θα κληθεί μόνο μία φορά
return config
}
Έτσι, το sync.Once διασφαλίζει την ασφαλή, από νήμα σε νήμα, εκτέλεση μιας λειτουργίας μόνο μία φορά.