@43.2 Event Loop in Dart

ကျတော််တို့ အရင် post မှာ Dart Programming နဲ့ Flutter Framework မှာ အလုပ်လုပ်တဲ့ Thread(Ioslate) တွေအကြောင်းကို ပြောခဲ့ ပြီးပြီဖြစ်ပါတယ်။ အခု post မှာတော့ event loop အကြောင်းကို လေ့လာသွားမယ်

အရင် post => @43 Asynchronous Programming in Dart & Flutter 

Dart Programming Language က Single Threaded ဖြစ်တဲ့အတွက် ၁ ကြိမ်မှာ အလုပ်၁ ခု ကိုပဲလုပ်နိုင်မှာဖြစ်ပါတယ်။

Note* Flutter က single thread မဟုတ်ပါ။

Eg . ၁ကြိမ်မှာ ကား ၁ စီးပဲ သွားနိုင်မှာ ဖြစ်ပါတယ်။

Flutter Framework မှာတော့ ၁ ကြိမ်မှာ အလုပ် ၁ ခုပဲ လုပ်ရင် မလုံလောက်တဲ့အတွက် Multi Threaded run နေတာဖြစ်ပါတယ်။

ဒါပေမယ့် အခုက Single Thread ဆိုတော့ Heavy Operation တွေကို run မယ်ဆိုရင် နောက်လာမယ့် process တွေအားလုံး ရပ်သွားမှာ ဖြစ်ပါတယ်။

ကား ၁ စီးပဲ သွားလို့ရတယ့်လမ်းမှာ အနှေးယာဥ◌် ၁ စီး ရှိနေမယ် ဆိုရင် နောက်ကကားတွေ အားလုံး မြန်မြန်သွားလို့ရတော့မှာ မတုတ်ပါဘူး

အိုကေ ကားအသေးတွေကို normal process အနေနဲ့ ယူဆလိုက်မယ်ဆိုရင် heavy process ကြီးမပြီးမချင်း ကျတော်တို့ ရဲ့ normal process တွေက စောင့်နေရမှာ ဖြစ်ပါတယ်။ အဲ့ တာကို ဖြေရှင်းဖို့အတွက် Dart Programming Language မှာ Event Loop နဲ့ handle လုပ်သွားမှာဖြစ်ပါတယ်။ Javascript နဲ့ သဘောတရားချင်းအတူတူပဲဖြစ်ပါတယ်။ Event Loop ထဲမှာ Queue ၂ ခုရှိပြီး MicroTask Queue နဲ့ Event Queue ဆိုတာတော့ အရင် post မှာ ပြောခဲ့ပြီးဖြစ်ပါတယ်။

Long running Process တွေ အားလုံးကို event loop ပေါ်တင်ထားလိုက်ပြီး normal process တွေကို ပုံမှန်အတိုင်း run သွားမယ်။

ဒါကတော့ Dart Programming Language ရဲ့ Single Thread မှာအလုပ်လုပ်တဲ့ asynchronous model ပဲ ဖြစ်ပါတယ်။

Normal Process တွေအားလုံး ကုန်သွားမှ event loop က စပြီး အလုပ်လုပ်မှာဖြစ်ပါတယ်။