Junior — Middle
Ko'p ipli muhitda yigin bilan ishlash qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida, ko‘p iplikli muhitda yacheykaga (heap) ishlash, o‘rnatilgan axlat tozalash va gorutinlar rejalashtiruvchisi yordamida amalga oshiriladi. Yacheyka — bu dinamik obyektlar joylashtiriladigan xotira maydoni bo‘lib, unga kirish turli gorutinlardan amalga oshirilishi mumkin.
Yacheykaga xavfsiz ishlash uchun Go quyidagilarni ishlatadi:
- Axlat tozalash (GC), u avtomatik ravishda ishlatilmayotgan xotirani bo‘shatadi va oqishni oldini oladi.
- Mutexlar va boshqa sinxronizatsiya primitivlari (sync paketidan), agar umumiy ma’lumotlarga kirishni aniq himoya qilish kerak bo‘lsa.
Misol uchun: agar bir nechta gorutinalar yacheykada saqlangan umumiy ma’lumotlar tuzilmasiga kirsa, ma’lumotlar urushlarini oldini olish uchun sync.Mutex ishlatish kerak:
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]
}
Shu tarzda, Go axlat tozalash va kerak bo‘lsa sinxronizatsiya vositalarini taqdim etish orqali yacheykaga ishlashda xavfsizlikni ta’minlaydi.