Junior — Middle
Маалыматтарды буферсиз байланыш каналы аркылуу өткөрүү кандай жүргүзүлөт?
sobes.tech AI
AIден жооп
Go'da ma'lumotlarni uzatish uchun kanal bo'sh bo'lmagan holda sinxron tarzda amalga oshiriladi: yuboruvchi ma'lumotlarni o'qilmaguncha bloklanadi va aksincha. Bu goroutine'lar o'rtasida to'g'ridan-to'g'ri sinxronizatsiyani ta'minlaydi.
Misol:
ch := make(chan int) // bo'sh bo'lmagan kanal
// Yuboruvchi
go func() {
ch <- 42 // bloklanadi, yuboruvchi ma'lumotni o'qilmaguncha
}()
// Qabul qiluvchi
val := <-ch // bloklanadi, qiymat paydo bo'lguncha
fmt.Println(val) // 42 ni chiqaradi
Shu tarzda, ma'lumotlar to'g'ridan-to'g'ri uzatiladi, oraliq saqlashsiz, bu yuboruvchi va qabul qiluvchi o'rtasida sinxronizatsiyani kafolatlaydi.