Junior — Middle
Çox ipli mühitdə kartın təhlükəsiz girişini necə təmin etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, çox ipli mühitdə xəritəyə (map) təhlükəsiz giriş üçün sinxronizasiya istifadə etmək lazımdır, çünki map çox ipli təhlükəsiz olmayan məlumat strukturu sayılır. Ən yaygın üsul, oxuma və yazma zamanı girişə bloklamaq üçün mutex (sync.Mutex və ya sync.RWMutex) istifadə etməkdir.
sync.RWMutex ilə nümunə:
import (
"sync"
)
var (
m = make(map[string]int)
mu sync.RWMutex
)
func read(key string) int {
mu.RLock() // oxuma üçün bloklama
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock() // yazma üçün bloklama
defer mu.Unlock()
m[key] = value
}
Həmçinin, Go-da sync.Map tipi də mövcuddur, bu çox ipli təhlükəsiz xəritəni həyata keçirir və tez-tez oxuma əməliyyatları üçün optimallaşdırılıb. Əgər sərt tip yoxdursa və sadəlik istəyirsinizsə, istifadə edə bilərsiniz:
import "sync"
var m sync.Map
m.Store("key", 42) // yazma
value, ok := m.Load("key") // oxuma
Beləliklə, çox ipli mühitdə təhlükəsiz giriş üçün mutexlər və ya sync.Map istifadə edin.