Junior — Middle
Go-ში თხელიების სინქრონიზაციაში sync.Once ტიპის ძირითადი როლი რა არის?
sobes.tech AI
პასუხი AI-სგან
Go тилиндеги sync.Once тиби белгилүү бир код бөлүгүн так бир жолу ишке ашырылуусун камсыз кылуу үчүн колдонулат, эгер ал бир нече жиптен (goroutine) чакырылса да.
Негизги ролу — ресурстарды коопсуз жана туура баштоо (мисалы, singleton түзүү), жарыш шарттарын жана кайра иштетүүнү алдын алуу.
Колдонуу мисалы:
var once sync.Once
var config *Config
func loadConfig() {
config = &Config{/* баштоо */}
}
func GetConfig() *Config {
once.Do(loadConfig) // loadConfig only бир жолу чакырылат
return config
}
Мындайча айтканда, sync.Once функциянын көп жиптүү чөйрөдө коопсуз жана бир жолу гана ишке ашырылышын камсыздайт.