Goroutine သည် Go runtime က manage လုပ်တဲ့ lightweight concurrent task ပါ။ Function call ရှေ့မှာ go ထည့်လိုက်တာနဲ့ အဲဒီ function က main flow နဲ့အတူ တစ်ပြိုင်နက်အလုပ်လုပ်နိုင်ပါတယ်။ API calls အများကြီးခေါ်တာ၊ background job လုပ်တာ၊ worker system တည်ဆောက်တာတွေမှာအသုံးဝင်ပါတယ်။
go
package main
import (
"fmt"
"time"
)
func worker(name string) {
for i := 1; i <= 3; i++ {
fmt.Println(name, "task", i)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go worker("A")
worker("B")
}go worker("A") က worker A ကို goroutine အဖြစ် run ပါတယ်။ worker("B") က main goroutine ထဲမှာ run ပါတယ်။ အလုပ်နှစ်ခုတစ်ပြိုင်နက်နီးပါးဖြစ်လို့ output order မတူနိုင်ပါ။
You should see
(Output order may vary) B task 1 A task 1 A task 2 B task 2 B task 3 A task 3Info
Concurrency ဆိုတာ အလုပ်များကို တစ်ပြိုင်နက်စီမံတာပါ။ Parallelism ဆိုတာ တကယ် CPU core များပေါ်မှာ တစ်ပြိုင်နက် run တာပါ။ Go က concurrency ကိုရေးရလွယ်အောင်လုပ်ပေးပါတယ်။