Go by Example မြန်မာဘာသာ: Channel Buffering

ပုံမှန်အားဖြင့် channel တွေက unbuffered ဖြစ်ပါတယ်။ ဆိုလိုတာက ပို့လိုက်တဲ့တန်ဖိုး (chan <-) ကို လက်ခံဖို့ (<- chan) အဆင်သင့်ရှိနေမှသာ ပို့တာကို လက်ခံမှာဖြစ်ပါတယ်။ Buffered channel တွေကတော့ သတ်မှတ်ထားတဲ့ အရေအတွက်အထိ တန်ဖိုးတွေကို လက်ခံသူမလိုပဲ လက်ခံနိုင်ပါတယ်။

package main
import "fmt"
func main() {

ဒီမှာ တန်ဖိုး 2 ခုအထိ buffer လုပ်နိုင်တဲ့ string channel တစ်ခုကို make နဲ့ဖန်တီးထားပါတယ်။

    messages := make(chan string, 2)

ဒီ channel က buffered ဖြစ်တဲ့အတွက် ဒီတန်ဖိုးတွေကို တပြိုင်နက်တည်း လက်ခံနေတဲ့သူမရှိပဲနဲ့ channel ထဲကို ပို့လို့ရပါတယ်။

    messages <- "buffered"
    messages <- "channel"

နောက်ပိုင်းမှ ဒီတန်ဖိုးနှစ်ခုကို ပုံမှန်အတိုင်း လက်ခံယူလို့ရပါတယ်။

    fmt.Println(<-messages)
    fmt.Println(<-messages)
}
$ go run channel-buffering.go 
buffered
channel

နောက်ဥပမာ: Channel Synchronization.