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