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