Junior — Middle
რის პირობებში ხდება ბლოკირება მონაცემთა გადაცემის სისტემაში ბუფერული არხის გამოყენებისას?
sobes.tech AI
პასუხი AI-სგან
Go-ში, ბუფერიზებული არხი ორი ძირითადი შემთხვევით ბლოკდება:
-
კანალზე დაწერის (გაგზავნის) დროს: თუ არხის ბუფერი სავსეა (ანუ, არხში ელემენტების რაოდენობა მიაღწია მის მოცულობას), ახალი მნიშვნელობის გაგზავნის მცდელობა ბლოკავს goroutine-ს, სანამ ვინმე არ წაიკითხავს არხიდან და არ გაათავისუფლებს ადგილს.
-
კანალიდან წაკითხვის დროს: თუ არხი ცარიელია (არ არის ელემენტები წასაკითხად), წაკითხვის მცდელობა ბლოკავს goroutine-ს, სანამ ვინმე არ გაუგზავნის ახალ მნიშვნელობას.
ასე რომ, ბლოკირება ხდება, როდესაც ცდილობთ მონაცემების გაგზავნას სავსე ბუფერში ან ცარიელ ბუფერში წაკითხვას.