Sobes.tech
Junior — Middle

რის პირობებში ხდება ბლოკირება მონაცემთა გადაცემის სისტემაში ბუფერული არხის გამოყენებისას?

sobes.tech AI

პასუხი AI-სგან

Go-ში, ბუფერიზებული არხი ორი ძირითადი შემთხვევით ბლოკდება:

  1. კანალზე დაწერის (გაგზავნის) დროს: თუ არხის ბუფერი სავსეა (ანუ, არხში ელემენტების რაოდენობა მიაღწია მის მოცულობას), ახალი მნიშვნელობის გაგზავნის მცდელობა ბლოკავს goroutine-ს, სანამ ვინმე არ წაიკითხავს არხიდან და არ გაათავისუფლებს ადგილს.

  2. კანალიდან წაკითხვის დროს: თუ არხი ცარიელია (არ არის ელემენტები წასაკითხად), წაკითხვის მცდელობა ბლოკავს goroutine-ს, სანამ ვინმე არ გაუგზავნის ახალ მნიშვნელობას.

ასე რომ, ბლოკირება ხდება, როდესაც ცდილობთ მონაცემების გაგზავნას სავსე ბუფერში ან ცარიელ ბუფერში წაკითხვას.