Sobes.tech
Junior — Middle

Бир каналга бир нече гурутин менен бир убакта билдирүү жөнөтүү уруксат берилеби?

sobes.tech AI

AIден жооп

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

Бирок, эске тутуу маанилүү:

  • Эгер бир нече горутин бир каналга жазып жатса жана эч ким окуду эмес, бул блокко алып келет.
  • Эгер канал буферленсе, жазуулар only буфер толгондо блоктолот.
  • Каналды жабууну этияттык менен башкаруу керек: аны жөнөтүүчү гана жабуусу керек, жана ал эми эч кандай жазуулар болбойт деп ишенсе гана.

Мисал:

ch := make(chan int)

// Бир нече горутинду ишке киргизүү, маалыматтарды каналга жөнөтүү
for i := 0; i < 3; i++ {
    go func(id int) {
        ch <- id
    }(i)
}

// Каналдан окуу
for i := 0; i < 3; i++ {
    fmt.Println(<-ch)
}

Ошентип, бир нече горутинден бир убакта каналга жөнөтүү — Goда стандарттык практика.