Junior — Middle
Zabezpečuje štandardná karta paralelnú bezpečnosť pri súčasnej práci viacerých vlákien?
sobes.tech AI
Odpoveď od AI
Štandardná mapa v Go nie je vlákno-bezpečná pri súčasnom zápise alebo čítaní a zápise z viacerých gorút. Ak viaceré gorutiny súčasne pristupujú k mape bez synchronizácie, môže to viesť k panike alebo nesprávnym údajom.
Na zabezpečenie paralelnej bezpečnosti možno použiť:
- sync.Mutex na zámok prístupu k mape
- sync.RWMutex na oddelenie čítania a zápisu
- sync.Map — špecializovanú, vlákno-bezpečnú dátovú štruktúru, zavedenú v Go 1.9, optimalizovanú pre konkurenčný prístup
Príklad použitia sync.Map:
var m sync.Map
m.Store("key", "value")
value, ok := m.Load("key")
Týmto spôsobom, štandardná mapa nie je vlákno-bezpečná, ale existujú nástroje na bezpečnú prácu s údajmi v konkurenčnom prostredí.