Middle+
ვინ უნდა დახუროს არხი?
sobes.tech AI
პასუხი AI-სგან
ჩანალის შექმნის შემქმნელმა უნდა დახუროს იგი და აღარ განახორციელოს მასში მონაცემების გაგზავნა. ეს მნიშვნელოვანია, რათა თავიდან აიცილოს პანიკა, როდესაც ცდილობთ დახურულ ჩანალზე მონაცემების გაგზავნას, და რათა მიმღებებმა სწორად განსაზღვრონ მონაცემთა ნაკადის ბოლო.
ძირითადი წესები:
- გამგზავნი დახურავს ჩანალს, როდესაც აღარ აპირებს მნიშვნელობების გაგზავნას.
- მიმღებებმა არ უნდა დახურონ ჩანალი.
- ჩანალის დახურვა სიგნალია მიმღებებისთვის, რომ ახალი მონაცემები აღარ იქნება.
მაგალითი:
func მწარმოებელი(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // ყველა მონაცემის გაგზავნის შემდეგ, ჩანალი უნდა დავხუროთ
}
func მოხმარებელი(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// როდესაც ჩანალი დახურულია, ციკლი დასრულდება
}
func main() {
ch := make(chan int)
go მწარმოებელი(ch)
მოხმარებელი(ch)
}