Junior — Middle
როდის მოხდება ბლოკირება 100 ელემენტიან არხის გამოყენებისას?
sobes.tech AI
პასუხი AI-სგან
Go-ში, 100 ელემენტის ბუფერის ზომის არხი ნიშნავს, რომ მასში შეიძლება გაუგზავნოთ մինչև 100 მნიშვნელობა, ისე რომ გამგზავნი არ ბლოკირდეს.
ბლოკირება მოხდება მაშინ, როდესაც არხის ბუფერი უკვე შეიცავს 100 ელემენტს და გამგზავნი გორუტინა ცდილობს გაუგზავნოს 101-ე ელემენტს. რადგან ბუფერი სავსეა, გაგზავნა ბლოკდება მანამ, სანამ ვინმე არ წაიკითხავს მინიმუმ ერთ ელემენტს არხიდან.
მაგალითი:
ch := make(chan int, 100)
// ავსებთ არხს
for i := 0; i < 100; i++ {
ch <- i // არ ბლოკდება
}
// შემდეგი გაგზავნა ბლოკდება, სანამ არ წაიკითხება ერთი ელემენტი
ch <- 101 // ბლოკდება
ასე რომ, ბლოკირება ხდება, როდესაც ცდილობთ გაუგზავნოთ ელემენტი სრულად სავსე არხის ბუფერში.