Junior — Middle
Чӣ гуна кор бо гулӯ дар муҳити бисёрсоҳавӣ амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар Го, кор бо хешт (heap) дар муҳити бисёрсӯрона тавассути ҷамъкунандаи партовҳои дарунсохт ва нақшакашии goroutine иҷро мешавад. Хешт як минтақаи хотира аст, ки дар он объектҳои динамикӣ ҷойгир карда мешаванд, ва дастрасӣ ба он метавонад аз goroutineҳои гуногун сурат гирад.
Барои кор бо хешт бехатартар, Го истифода мебарад:
- Ҷамъкунандаи партовҳо (GC), ки автоматӣ хотираи истифодашударо озод мекунад ва аз дардҳои хотира пешгирӣ мекунад.
- Mutexҳо ва дигар primitives-и ҳамоҳангсозӣ (аз пакети sync), агар лозим ояд, дастрасиро ба маълумоти умумӣ, ки дар хешт ҷойгир аст, ба таври ошкор ҳимоя кардан.
Масалан: агар чанд goroutine ба структураи умумии маълумот, ки дар хешт аст, дастрасӣ дошта бошанд, бояд sync.Mutex истифода шавад, то ҳолатҳои рақобатро пешгирӣ кунад:
var mu sync.Mutex
var sharedData = make(map[string]int)
func writeData(key string, value int) {
mu.Lock()
defer mu.Unlock()
sharedData[key] = value
}
func readData(key string) int {
mu.Lock()
defer mu.Unlock()
return sharedData[key]
}
Тавре ки, Го бо истифода аз ҷамъкунандаи партовҳо бехатариро дар кор бо хешт таъмин мекунад ва воситаҳои ҳамоҳангсозиро дар сурати зарурат пешниҳод мекунад.