Junior — Middle
Go'da goroutine'lar o'rtasida ma'lumot almashinuvi qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida, ma'lumot almashinuvi asosan kanallar (channels) orqali amalga oshiriladi. Kanallar goroutine’lar o'rtasida xavfsiz ma'lumot uzatishni ta'minlaydi, sinxronizatsiya qiladi va raqib shartlarni oldini oladi.
Kanaldan foydalanish misoli:
ch := make(chan int)
// Goroutine ichida ma'lumot yuborish
go func() {
ch <- 42
}()
// Asosiy goroutine’da ma'lumot olish
value := <-ch
fmt.Println(value) // 42 ni chiqaradi
Kanallar bufferli yoki buffersiz bo'lishi mumkin, bu ma'lumot yuborish va qabul qilishda bloklash xulqini ta'sir qiladi. Bundan tashqari, almashish uchun boshqa mexanizmlar, masalan, umumiy o'zgaruvchilar va mutexlar ham ishlatilishi mumkin, ammo kanallar Go’da asosiy idiomatik aloqa usulidir.