Sobes.tech
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.