Channel در Go سازوکاری برای انتقال داده و هماهنگی میان Goroutineهاست و میتواند Buffered یا Unbuffered باشد.
Workerهای پردازش سفارش میتوانند از Channel مشترک Job دریافت کنند.
در عمل چه چیزی مهم است؟
Channel جایگزین همه Lockها نیست. باید بستن، Cancellation و Backpressure را مدیریت کرد.
انتقال نتیجه با چنل در Go
results := make(chan int)
go func() { results <- 42 }()
value := <-results
Channel برای ارتباط میان گوروتینها استفاده میشود. چنل بدون بافر هنگام ارسال و دریافت همگام میشود و طراحی نادرست میتواند به ددلاک منجر شود.