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.Mutexvagysync.RWMutex) — olvasási és írási műveleteket zárnak le, hogy elkerüljék a versenyhelyzeteket. sync.Mapcsomag — 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.