Sobes.tech
Junior — Middle

Map tuzilmasi va Mutex mexanizmi yordamida umumiy resursga kirishni qanday sinxronlashtirish mumkin?

sobes.tech AI

AIdan javob

Go tilida, umumiy Map tuzilmasiga kirishni sinxronlashtirish uchun odatda mutex (sync.Mutex) ishlatiladi, chunki map bir vaqtning o'zida xavfsiz emas.

Misol:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // kirishni bloklaydi
    sharedMap[key] = value
    mu.Unlock()         // ochadi
}

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

Shu tarzda, mapga o'qish yoki yozishdan oldin mutexni bloklash orqali raqobat shartlarini oldini olish va muvofiqlashtirilgan muhitda to'g'ri ishlashni ta'minlash mumkin.