Junior — Middle
შესაძლებელია თუ არა მონაცემების ერთდროულად ჩაწერა არხში ბუფერის გამოყენების გარეშე?
sobes.tech AI
პასუხი AI-სგან
Go-ში არხები შეიძლება იყოს ბუფერული ან ბუფერული არა. ბუფერულ არხზე დაწერა (გაგზავნა) ბლოკდება მანამ, სანამ სხვა goroutine არ წაიკითხავს მნიშვნელობას არხიდან.
ერთდროულად ბუფერულ არხზე დაწერა შეუძლებელია, რადგან გაგზავნა ბლოკდება მიღებამდე, და მხოლოდ ერთი გამგზავნი შეუძლია მონაცემების გადაცემა ერთდროულად.
თუ საჭიროა ერთდროულად დაწერა ბლოკირების გარეშე, გამოიყენება ბუფერული არხები, სადაც გამგზავნი შეუძლია მონაცემების ჩადება ბუფერში, არ ელოდოს დაუყოვნებლივ მიღებას.
ბუფერული არხის მაგალითი:
ch := make(chan int) // ბუფერული არხი
// გაგზავნა ბლოკდება, სანამ ვინმე არ წაიკითხავს
ch <- 1
საერთო ჯამში: ბუფერის გარეშე, ერთდროულად დაწერა შეუძლებელია.