Sobes.tech
Junior — Middle

Бул массив көп жиптүү чөйрөдө колдонууда коопсуздукту камсыздайбы?

sobes.tech AI

AIден жооп

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

Көп жиптүү чөйрөдө коопсуздукту камсыздоо үчүн төмөнкүлөрдү колдонуш керек:

  • Мьютекс (sync.Mutex) аркылуу кесимди өзгөртүү учурунда кирүүнү бөгөттөө.
  • Горутиндер арасында маалыматтарды өткөрүү үчүн каналдар (chan).
  • sync пакети же тышкы китепканалардан атайын түзүмдөр.

Мьютекс менен мисал:

var mu sync.Mutex
var slice []int

func appendSafe(val int) {
    mu.Lock()
    defer mu.Unlock()
    slice = append(slice, val)
}

Бул чараларсыз массив биргелешип колдонууга коопсуз эмес.