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 функциянын көп жиптүү чөйрөдө коопсуз жана бир жолу гана ишке ашырылышын камсыздайт.