Sobes.tech
Junior — Middle

როგორ შევინარჩუნოთ საერთო რესურსის წვდომა Map სტრუქტურის და Mutex მექანიზმის გამოყენებით?

sobes.tech AI

პასუხი AI-სგან

Go ენაში საერთო Map სტრუქტურის წვდომის სინქრონიზაციისთვის ჩვეულებრივ გამოიყენება mutex (sync.Mutex), რადგან map არ არის ნაკადი უსაფრთხო.

მაგალითი:

import (
    "sync"
)

var (
    mu sync.Mutex
    sharedMap = make(map[string]int)
)

func writeToMap(key string, value int) {
    mu.Lock()           // ბლოკავს წვდომას
    sharedMap[key] = value
    mu.Unlock()         // გაუქმებს ბლოკს
}

func readFromMap(key string) (int, bool) {
    mu.Lock()
    val, ok := sharedMap[key]
    mu.Unlock()
    return val, ok
}

ამ გზით, Map-ში წაკითხვამდე ან დაწერამდე mutex-ი ბლოკდება, რათა თავიდან აიცილოს შეჯახების პირობები და უზრუნველყოს სწორი მუშაობა კონკურენტულ გარემოში.