Thuta Learning
ရှာဖွေရန်
AdvancedProgrammingbeginner

Goroutines (Concurrency)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

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 3

Info

Concurrency ဆိုတာ အလုပ်များကို တစ်ပြိုင်နက်စီမံတာပါ။ Parallelism ဆိုတာ တကယ် CPU core များပေါ်မှာ တစ်ပြိုင်နက် run တာပါ။ Go က concurrency ကိုရေးရလွယ်အောင်လုပ်ပေးပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Main function ပြီးသွားရင် program ကထွက်သွားနိုင်လို့ background goroutine မပြီးခင်ပိတ်သွားနိုင်ပါတယ်။ Real project မှာ channel သို့မဟုတ် sync.WaitGroup နဲ့စောင့်ပေးပါ။
Goroutines (Concurrency) | Thuta Learning