ايه هو الـــــ Isolates ؟
في البوست الي فات اتكلمت عن مشكلة بتتحل عن طريق الasynchrnouns بس لو حصل بقى و اتكتب في الكود حاجه synchronous ساعتها هيحصل ايه ؟
ببساطة البرنامج برده هيقف و الui مش هيعرف يعمل refresh بسبب الجزء ده من الكود , طيب ايه الحل للمشكلة ديه ؟
الحل هو الـــparallelism , وده الي لغة زي dart بتعمله انها بتخليك تقدر تشغل الكود parallel عن طريق الــــisolates , و الي هي ببساطة كده انك فصلت باقي الكود بحيث يشتغل على thread لوحده و processor لوحده في نفس توقيت تنفيذ الكود الي هو synchronous و كده بقى البرنامج يكمل شغله عادي و يظهر للــuser بدون مشاكل او توقف و ليه عشان خلاص انت فصلت الجزء ده بحيث انه يكمل شغله و باقي الكود ميتأثر او ميقفش بسببه . وده يبقى حل مشكلة ممكن حدوثها حتى و احنا بنستخدم asynchronous code .
طيب الasync بيعمل ايه : بيقدريخلي الكود كله يشتغله حتى لو في حاجه هتاخد وقت مبيخليش البرنامج يقف بحيث انه يخلي كذا حاجه شغالة مع بعض , لكن الasync مش بتعمل او بتنشأ thread جديد هي بس بتقدر متوقف الكود و يفضل كله شغال . لكن في حالة زي الي ذكرت فوق ديه بتوقف عمل باقي الكود,
لكن الisolate بيعمل ايه : بيقدر يشغل الكود الي في البرنامج على اساس الparallelism او في شكل متوازي مع بعضه , يعني لو في تعطل او توقف حصل عند isolate التانية مش هتقف و هتفضل مكملة باقي الكود و بدون تأثير في سرعة تشغيله .
الفكره ان الـــisolate في صعوبة في تطبيقها لكن هي تعتبر الحل في حالة زي الي قولنها ( ان يكون في حالة sync دخل asynchronous ) .
هبقى ان شاء الله اعمل لطريقة عمل الــIsolate في بوست تاني
ده مثال بتوضح فيه المشكلة
void _refresh() async {
var url = _assembleUrl(option);
var content = await http.get(url);
var articles = _parse(content); // synchronous code
_update(articles);
}
اللهم علمنا ما ينفعنا و انفعنا بما علمتنا
المصادر :
https://www.youtube.com/watch?v=5AxWC49ZMzs&t=79s
Post #2248
5.15K