Junior — Middle
Go'da goroutine'lar arasındaki etkileşim nasıl sağlanır?
sobes.tech AI
AIден жооп
Go тилинде, goroutine'лер арасындагы өз ара аракеттешүү каналдар (channels) аркылуу жүргүзүлөт. Каналдар goroutine'лер арасында маалыматтарды коопсуз өткөрүүгө жана алардын ишин синхрондоштурууга мүмкүндүк берет.
Негизги учурлар:
- Канал
make(chan Тип)аркылуу түзүлөт. - Каналга жөнөтүү:
ch <- баалуулук. - Каналдан алуу:
баалуулук := <-ch. - Каналдар буферлүү же буферсиз болушу мүмкүн.
Мисал:
func main() {
ch := make(chan string)
go func() {
ch <- "салам goroutine'ден"
}()
msg := <-ch
fmt.Println(msg)
}
Ушул жол менен, каналдар параллелдүү goroutine'лер арасында коопсуз жана ыңгайлуу өз ара аракеттешүүнү камсыздайт, mutexтер же башка бөгөт коюу механизмдерин колдонууга муктаждык жок.