اجرا شدن Thread ها بر روی گوشی چند هسته ای
بحث تفکیک هر Thread روی CPU مجزا، توسط نرم افزار فرمان داده می شود و بصورت اتوماتیک هم توسط سخت افزار ( یا سیستم عامل ) ممکن است تعیین شود، اما تعیین شما اولویت دارد بر تعیین سیستم عامل. اما اینکه چگونه است، تا بحال تجربه ای در آن نداشته ام.
در خصوص اولویت بندی برای Thread ، خاصیتی به نام Priority وجود دارد که میزان اهمیت آن Thread را مشخص می کند. در اندروید نیز متدهای آن به سادگی از داخل نمونه ساخته شده از Thread قابل دسترسی است ولی بازهم من استفاده نکرده ام چون اصلاً نیازی نمی شود. چون Thread معمولاً برای کارهایی است که قرار هستند در پشت صحنه و به مدت طولانی اجرا شوند و در این شرایط ما نباید منتظر اتمام آنها باشیم. در بعضی شرایط هم ما اتمام آنرا می خواهیم بدانیم اما در آن حین کار دیگری برای انجام دادن نداریم ( مثل گرفتن اطلاعات از وب سرویس که در قسمتهای بعد آموزش داده شده ) که در این شرایط هم باز Priority اهمیتی برای ما ندارند. خیلی نگران این مسائل نباشید چون بیشتر به شلوغ شدن و خطرناک تر شده پروژه ( به قول خودم باگ خیز شدن پروژه ) منجر خواهند شد.
اما در خصوص کنترل روی Thread ها، متدهای زیادی مثل sleep, join, wait, notify ، انواع Lock و ... وجود دارند که من به ندرت از آن استفاده کرده ام و باز هم خیلی در توسعه نرم افزار کاربردی نیستند بلکه بیشتر بدرد رسانه های پر پردازش، مثل بازی و پردازش تصویر و ... می خورند و به نظر من آموزش برخی از آنها هم بی مورد بود، که در آموزشها ارائه نشد.
ما همه چیز را نباید به Thread ها محول کنیم و تنها در شرایط خاص مثل:
- ارتباط با سرور ، نظیر وب سرویس، دانلود فایل و نظایر آن
- پردازش تصویر
- بارگزاری منابع از SDCARD
- محاسبات بسیار بسیار پیچیده
- شمارشگر ها و توابع وقفه ای ( مثل پروژه Counter )
- و ...
استفاده خواهیم کرد.
در خصوص اطلاعات بیشتر برای Thread ها و مشابه سازی آن با ویندوز، به Task Manager ویندوز بروید و ببینید که هر پروسس می تواند Set Priority و Set Affinity داشته باشد، که اولی اولتی اجرای آن Process و در شرایط ما Thread است و دومی تعداد CPU هایی که توسط سیستم عامل به آن اتصال داده می شود ، حالا اگر برنامه خواست استفاده کند، می تواند از آن CPU بهره گیرد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .