Sobes.tech
Junior — Middle

Стандарттык карта бир нече агымдар бир мезгилде иштеп жатканда параллель коопсуздукту камсыздайбы?

sobes.tech AI

AIден жооп

Go'дун стандарттык картасы (map) бир убакта жазуу же окуу жана жазуу үчүн бир нече горутиндерден коргоосуз. Эгер бир нече горутиндер бир убакта картага кайрылыса жана синхрондоштуруу болбосо, бул паникага же туура эмес маалыматтарга алып келиши мүмкүн.

Параллелдик коопсуздукту камсыздоо үчүн төмөнкү инструменттерди колдонсо болот:

  • sync.Mutex — картага кирүүнү блоктоо үчүн
  • sync.RWMutex — окуу жана жазууну бөлүү үчүн
  • sync.Map — атайын, бир нече горутиндер менен иштөө үчүн оптималдаштырган, коопсуз структура, Go 1.9да киргизилген

sync.Map колдонуу мисалы:

var m sync.Map
m.Store("key", "value")
value, ok := m.Load("key")

Ошентип, стандарттык карта бир нече горутиндер менен иштөө үчүн коопсуз эмес, бирок коопсуз иштөө үчүн инструменттер бар.