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