Junior — Middle
Buffersiz məlumat ötürmə kanalının işləmə prinsipini izah edin
sobes.tech Süni İntellekt
AI-dan cavab
Go'da buffersizsiz kanal 0 ölçüsündədir, yəni içində dəyərləri saxlamır. Belə bir kanala göndəriş, başqa bir goroutine dəyəri qəbul edənə qədər bloklanır və əksinə — qəbul, göndərən görünənə qədər bloklanır.
Bu, gorutinalar arasında sinxronizasiyanı təmin edir: göndərən və alan eyni vaxtda görüşməlidir ki, məlumat ötürülməsi baş tutsun.
Nümunə:
ch := make(chan int) // buffersiz kanal
// Göndərmə
go func() {
ch <- 42 // kimsə oxumazsa bloklanır
}()
// Qəbul
val := <-ch // kimsə göndərməzsə bloklanır
fmt.Println(val) // 42 göstərəcək
Bu tip kanal, "tələbat üzərində" məlumat ötürmə və sinxronizasiya üçün faydalıdır, buffersiz.