🔥Capsule
⚡️⚡️⚡️Flutter threads⚡️⚡️⚡️
1️⃣
❓آیا فلاتر single thread هست؟ 🤔
جواب این سوال هم آره هست و هم نه. 😳😳
ولی چرا اره و چرا نه.
بستگی داره از چه نظر به موضوع نگاه کنیم.
🔥اگه فقط کدهایی که خودمون داریم مینویسیم رو در نظر بگیریم و کار هایی ک framework فلاتر روی کدهای ما انجام میده به جواب آره میرسیم.
جهت یادآوری بگم که قبلن توی یه پست دیگه در مورد بخش های مختلف فلاتر توضیح دادیم و گفتیم که فلاتر از یه بخش به اسم framework که کلن با Dart نوشته شده و یه بخش دیگه به اسم engine که با c++ نوشته شده و ... تشکیل شده.
اینجا منظورمون از framework هم همون بخش نوشته شده با Dart هست.
✔️این جا یه thread داریم به اسم UI thread که تمام کدهایی که ما نوشتیم به علاوه کار هایی framework انجام میده، داخلش انجام میشه.
❓حالا کار هایی که framework انجام میده چیه؟
بحث کردن راجب این موضوع خیلی مفصله ولی به طور کلی و خیلی ساده framework کدهای ما (ویجت ها) رو به ی سری painting commands تبدیل میکنه که بعدن اون رو تحویل engine بده و engine هم اون رو روی صفحه نمایش بده.
همچنین کارهای دیگه ای هم framework انجام میده از جمله دریافت event هایی مثل touch یا click های کاربر از engine و پردازش اون ها و هدایت کردن اون touch ها به سمت object های هدف.
کارهای framework به این موارد خلاصه نمیشن....
همه این کارها در یک thread انجام میشه(یک isolate که یک thread داره)
🔥پس نکته مهمی که این جا مطرح هست block نشدن این thread هست.
یعنی باید جوری کد بنویسیم که این thread قفل یا block نشه که اگه این اتفاق بیوفته نتیجش افت frame و لگ توی برنامه (به خصوص موقع اجرای انیمیشن ها خواهد بود)
🔥برای جلوگیری از block شدن این thread میتونیم برای پردازش های سنگین ، isolate های دیگه ای بسازیم.
✔️در مورد جواب ،،نه،، این سوال هم توی پست بعدی صحبت میکینم. ☺️
#capsule
#advanced
#single_thread
⚡️⚡️⚡️Flutter threads⚡️⚡️⚡️
1️⃣
❓آیا فلاتر single thread هست؟ 🤔
جواب این سوال هم آره هست و هم نه. 😳😳
ولی چرا اره و چرا نه.
بستگی داره از چه نظر به موضوع نگاه کنیم.
🔥اگه فقط کدهایی که خودمون داریم مینویسیم رو در نظر بگیریم و کار هایی ک framework فلاتر روی کدهای ما انجام میده به جواب آره میرسیم.
جهت یادآوری بگم که قبلن توی یه پست دیگه در مورد بخش های مختلف فلاتر توضیح دادیم و گفتیم که فلاتر از یه بخش به اسم framework که کلن با Dart نوشته شده و یه بخش دیگه به اسم engine که با c++ نوشته شده و ... تشکیل شده.
اینجا منظورمون از framework هم همون بخش نوشته شده با Dart هست.
✔️این جا یه thread داریم به اسم UI thread که تمام کدهایی که ما نوشتیم به علاوه کار هایی framework انجام میده، داخلش انجام میشه.
❓حالا کار هایی که framework انجام میده چیه؟
بحث کردن راجب این موضوع خیلی مفصله ولی به طور کلی و خیلی ساده framework کدهای ما (ویجت ها) رو به ی سری painting commands تبدیل میکنه که بعدن اون رو تحویل engine بده و engine هم اون رو روی صفحه نمایش بده.
همچنین کارهای دیگه ای هم framework انجام میده از جمله دریافت event هایی مثل touch یا click های کاربر از engine و پردازش اون ها و هدایت کردن اون touch ها به سمت object های هدف.
کارهای framework به این موارد خلاصه نمیشن....
همه این کارها در یک thread انجام میشه(یک isolate که یک thread داره)
🔥پس نکته مهمی که این جا مطرح هست block نشدن این thread هست.
یعنی باید جوری کد بنویسیم که این thread قفل یا block نشه که اگه این اتفاق بیوفته نتیجش افت frame و لگ توی برنامه (به خصوص موقع اجرای انیمیشن ها خواهد بود)
🔥برای جلوگیری از block شدن این thread میتونیم برای پردازش های سنگین ، isolate های دیگه ای بسازیم.
✔️در مورد جواب ،،نه،، این سوال هم توی پست بعدی صحبت میکینم. ☺️
#capsule
#advanced
#single_thread
👍1
🔥Capsule
⚡️⚡️⚡️Flutter threads⚡️⚡️⚡️
2️⃣
❓آیا فلاتر single thread هست؟ 🤔
خب بریم در مورد جواب ،، نه،، سوال بالا صحبت کنیم.
گفتیم که همه کدهای ما به علاوه پردازش های framework توی یه thread به اسم UI thread انجام میشه. و در نهایت یک سری painting command ها تولید میشن
❓.ولی این command ها به چه دردی میخورن ؟
🔥این ها به یه thread دیگه ای تحویل داده میشن که مسئولیتش ارتباط برقرار کردن با پردازشگر و درنهایت نمایش تصویر روی نمایشگر هست.
پس یه thread دیگه هم وارد کار شد که اسمش raster thread هست.
🔥همون طور که گفتیم کار Raster thread که بهش GPU thread هم میگن، دریافت painting command ها از UI thread و نمایش اون ها هست (این کار توسط engine که به زبان c++ نوشته شده انجام میشه)
🔥این دو thread یعنی UI و raster نقش اصلی در پرفرمانس اپ رو ایفا میکنن.
🔥ما به raster thread دسترسی نداریم ولی کدهایی که مینویسیم تاثیر مستقیم توی کار اون و پرفرمانسش داره.
پس اگه اپتون با افت فریم مواجه شد دلیلش رو توی کدهای خودتون جستجو کنید و به raster thread یا... انگ نچسبونید 😂😂.
🔥یه thread مهم دیگه هم به اسم IO thread داریم که وظیفش هندل کردن تسک های سنگین هست.
خیلی از future هایی که استفاده میکنیم میره توی این thread و پردازش میشه و بعد از این که done شد برمیگرده و یه event توی UI thread اجرا میشه.
❓ایا thread های دیگه هم غیر از این سه تا داریم ؟
✔️UI
✔️Raster
✔️IO
✔️? 🤔
#capsule
#advanced
#single_thread
⚡️⚡️⚡️Flutter threads⚡️⚡️⚡️
2️⃣
❓آیا فلاتر single thread هست؟ 🤔
خب بریم در مورد جواب ،، نه،، سوال بالا صحبت کنیم.
گفتیم که همه کدهای ما به علاوه پردازش های framework توی یه thread به اسم UI thread انجام میشه. و در نهایت یک سری painting command ها تولید میشن
❓.ولی این command ها به چه دردی میخورن ؟
🔥این ها به یه thread دیگه ای تحویل داده میشن که مسئولیتش ارتباط برقرار کردن با پردازشگر و درنهایت نمایش تصویر روی نمایشگر هست.
پس یه thread دیگه هم وارد کار شد که اسمش raster thread هست.
🔥همون طور که گفتیم کار Raster thread که بهش GPU thread هم میگن، دریافت painting command ها از UI thread و نمایش اون ها هست (این کار توسط engine که به زبان c++ نوشته شده انجام میشه)
🔥این دو thread یعنی UI و raster نقش اصلی در پرفرمانس اپ رو ایفا میکنن.
🔥ما به raster thread دسترسی نداریم ولی کدهایی که مینویسیم تاثیر مستقیم توی کار اون و پرفرمانسش داره.
پس اگه اپتون با افت فریم مواجه شد دلیلش رو توی کدهای خودتون جستجو کنید و به raster thread یا... انگ نچسبونید 😂😂.
🔥یه thread مهم دیگه هم به اسم IO thread داریم که وظیفش هندل کردن تسک های سنگین هست.
خیلی از future هایی که استفاده میکنیم میره توی این thread و پردازش میشه و بعد از این که done شد برمیگرده و یه event توی UI thread اجرا میشه.
❓ایا thread های دیگه هم غیر از این سه تا داریم ؟
✔️UI
✔️Raster
✔️IO
✔️? 🤔
#capsule
#advanced
#single_thread