Sobes.tech
Junior — Middle

Оё ин массив бехатариро дар муҳити бисёрсоҳавӣ таъмин мекунад?

sobes.tech AI

Ҷавоб аз AI

Дар Го, қисмҳои оддӣ (масивҳо бо андозаи динамикӣ) аз хати бехатар нестанд. Агар чанд goroutine ҳамзамон дар як қисм хонда ва нависанд бе ҳамоҳангсозӣ, ин ба шароити рақобат ва рафтори номуайян оварда мерасонад.

Барои таъмини бехатарӣ дар муҳити бисёрсоҳавӣ бояд истифода бурда шаванд:

  • Мутексиҳо (sync.Mutex) барои бастани дастрасӣ ҳангоми тағир додани қисм.
  • Каналҳо (chan) барои интиқоли маълумот байни goroutine-ҳо.
  • Сохторҳои махсуси маълумот аз бастаи sync ё китобхонаҳои беруна.

Масалан бо мутекс:

var mu sync.Mutex
var slice []int

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

Бе ин чораҳо, массив барои истифодаи ҳамзамон бехатар нест.