Pure Coder
787 subscribers
189 photos
30 videos
8 files
150 links
⭕️آدرس سایت:
https://purecoder.ir

⭕️گروه پرسش و پاسخ:
@purecoder_gp

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
🔥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
🔥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
💊Capsule
⚡️⚡️Dart threads⚡️⚡️
قبلن دوتا پست در مورد سینگل ترد بودن یا نبودن فلاتر داشتیم که میتونی با این تگ پیداشون کنی و بخونی
#single_thread

حالا یکم در مورد دارت صحبت کنیم.
آقا بعضیا میگن دارت سینگل ترد هست و به درد نمیخوره و فلان و....

این حرف از کجا در اومده؟ 😅😅🤦‍♂🤦‍♂

هر زبان برنامه نویسی که داشته باشید اون اول که شروع میکنید به کد نوشتن همه کد ها توی یک ترد اجرا میشه تا وقتی که خودتون برید یک یا چند ترد دیگه بسازید و....

خب دارت هم همین جوره
هیچ فرقی نداره از این لحاظ
زبان های دیگه که خودشون هوشمند براتون ترد نمیسازن
اون جا هم اولش یه ترد هست و میتونید ترد های بیشتر اضافه کنید.

توی دارت هم همینه فقط اسمش شده isolate
تلفظش میشه : آیزولیت
معنیش میشه محصور (همچین چیزی 😅)

حالا چرا این اسم رو گذاشتن روش؟
مریض بودن ایا؟ 😅
خب میزاشتن همون ترد دیگ 🤦‍♂🤦‍♂

نه عزیزان دل مریض نبودن.

🔥هر آیزولیت که ساخته میشه یک ترد جدید ساخته میشه.
در واقع هر ایزولیت یک سینگل ترد داره و یک event loop که کد ها داخلش اجرا میشه.

ولی برخلاف زبان هایی مثل جاوا یا c++ که ترد های مختلف از یک Shared memory استفاده میکنه اینجا توی دارت هر کدومشون یک private memory دارن و مموری رو بین خودشون share نمیکنن و فقط با رد و بدل کردن message با هم ارتباط برقرار می کنن

به همین دلیل بهشون میگن isolate.

#single_thread #capsule #advanced