Created by: abhinavarora
Fixes https://github.com/PaddlePaddle/Paddle/issues/8812
Like Go, we will also have one single implementation for both buffered and unbuffered channels. References:
- Channel Send - https://github.com/golang/go/blob/master/src/runtime/chan.go#L140
- Channel Receive - https://github.com/golang/go/blob/master/src/runtime/chan.go#L417
- Channel Close - https://github.com/golang/go/blob/master/src/runtime/chan.go#L327