Junior — Middle
Kanaldan oxuma əməliyyatı tampon istifadə etmədən mümkün mü?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, kanaldan (chan) oxuma əməliyyatı buffer olmadan yalnız kanal bufferli olsa mümkündür. Əgər kanal buffersizdirsə (ölçüsü 0), oxuma əməliyyatı kanalə dəyər göndəriləndə qədər bloklanır.
Beləliklə:
- Buffersiz, bloklamayan oxuma üçün, kanal ilə bloklamayan əməliyyatlar istifadə olunmalıdır (məsələn,
selectilədefault), amma bu məlumatların alınmasını təmin etmir. - Əgər kanal buffersizdirsə, oxuma hər zaman bloklanır, kimsə məlumat göndərənə qədər.
Bufferli kanal nümunəsi:
ch := make(chan int, 1) // 1 elementlik buffer
ch <- 42 // dəyər göndəririk
val := <-ch // bloklamadan oxuyuruq
Əgər kanal buffersizdirsə, oxuma və yazma birbaşa goroutine-lər arasında sinxronlaşır.