Sobes.tech
Middle — Middle+

Hogyan valósul meg az aszinkron Map adatszerkezet?

sobes.tech MI

Válasz az MI-től

Go nyelvben az alapértelmezett map adattípus nem szálbiztos több goroutine egyidejű hozzáférése esetén. Aszinkron (versengő) munkavégzés map-pel további szinkronizációt igényel.

A map biztonságos használatához versengő környezetben általában a következőket alkalmazzák:

  • Mutexek (sync.Mutex vagy sync.RWMutex) — olvasási és írási műveleteket zárnak le, hogy elkerüljék a versenyhelyzeteket.
  • sync.Map csomag — egy speciális, szálbiztos térkép implementáció, amely optimalizált sok goroutine és ritka módosítások esetén.

Példa sync.Map-pel:

var m sync.Map

// Írás
m.Store("key", "value")

// Olvasás
if val, ok := m.Load("key"); ok {
    fmt.Println(val)
}

// Törlés
m.Delete("key")

Így a map-pel való aszinkron munka Go nyelven vagy explicitt szinkronizációval, vagy a standard könyvtár biztonságos struktúráinak használatával valósítható meg.