Sobes.tech
Junior — Middle

Ինչպե՞ս է գործում ծրագիրը, երբ փորձում է տվյալներ գրել բյուջե չունեցող ալիքին, եթե այն սկզբից դատարկ է։

sobes.tech AI

Պատասխան AI-ից

Go-յում, բալանս առանց բուֆեր (buffer size = 0) սինխրոն է: Սա նշանակում է, որ երբ փորձեք գրել տվյալներ այդպիսի ալիքին, և այդ պահին չկա պատրաստ ստացող, ծրագիրը բլոկվում է և սպասում, մինչև այլ goroutine կարդա արժեքը ալիքից:

Այնպես որ, գրառումը առանց բուֆերի ալիքին տեղի չի ունենում անմիջապես, այլ պահանջում է միաժամանակյա ընդունում: Սա ապահովում է ուղարկողի և ստացողի միջև սինխրոնիզացիան:

Օրինակ՝

ch := make(chan int) // առանց բուֆեր ալիք

// Ուղարկում առանձին goroutine-ում
go func() {
    ch <- 42 // բլոկվում է, մինչև որ մեկը կարդա
}()

// Կարդում
val := <-ch // կարդալուց հետո ուղարկումը բացվում է
fmt.Println(val)