الخيوط الحاسوبية (Threads)
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في الدروس السابقه رأينا كيف ان نظام الاندريد ينشئ عملية خاصة لتطبيقك بداخل الـ Android Runtime ART كمفهوم صندوق رملي. في هذا الدرس سنرى ماذا يوجد بداخل تلك العمليات, الا وهي الخيوط الحاسوبية.
تطبيق يحتوي على اكثر من خيط حاسوبي واحد
الخيط الحاسوبي
نستطيع القول بان الخيط الحاسوبي (Thread) هو حلقة الوصل بين تطبيقك (المهام التي يحتويها اي بين اسطرك البرمجيه) ووحدة المعالجة المركزية CPU للهاتف. فبدون خيط حاسوبي لاتستطيع تشغل اي سطر برمجي في تطبيقك, لذلك عندما تقوم بتشغيل تطبيقك يقوم نظام الاندرويد بأنشاء خيط حاسوبي مجاناً يسمى بالخيط الرئيسي, كالصورة التالي:
الخيط الحسوبي الرئيسي
عند تشغيل اي تطبيق في نظام الاندرويد فانه يعمل له خيط حاسوبي واحد ويسمى هذا الخيط بالتسميات Main Thread و UI Thread. يعتبر هذا الخيط مهم جداً ويجب الا يكثر استخدامه المبرمج لإجراء عملياته وحشر اسطره البرمجية.
وظيفة الخيط الحاسوبي الرئيسي
- هو المسؤل عن رسم وعرض العناصر الى المستخدم في الشاشة.
- هو المسؤل عن رصد الاحداث التي يحدثها المستخدم للتطبيق (مثلاً قيام المستخدم بالنقر على عنصر Button).
ماذا يحدث لو اكثرنا استخدام الخيط الحاسوبي الرئيسي
من المعروف ان جميع شفراتك البرمجية يتم نقلها الى المعالج من خلال هذا الخيط. مثلاً تعاملك مع قواعد البيانات (كالـ SQLite او Room), استقبال وارسال البيانات الى الشبكة العنكبوتية, وما الى ذلك. اذا اكثرت المهام على هذا الخيط سيكون تطبيقك بطئ جداً وفي اغلب الاحيان سيتوقف عن العمل لمدة معينة من الوقت. التوقف لمدة خمس ثواني سيسبب للمستخدم ظهور هذة المشكلة:
application not responding" (ANR) dialog
وهذا سيدعو المستخدم الى اغلاق تطبيقك وحذفه من جهازه.
نقاط مهمة للتعامل مع الخيط الحاسوبي الرئيسي
توجد هناك نقطتان وهما:
- لاتقم بحجز هذا الخيط, وذلك من خلال اجراء بعض العمليات الطويلة او التي تتطلب جهد. كالاستعلام عن الالف الحقول في قاعدة البيانات او التعامل مع الشبكة العنكبوتية عليه كالـ الخوادم والـ API.
- لاتقم بمحاولة استخدام اي من عناصر الواجهه خارج هذا الخط. مثلاً تريد تحديث نص لعنصر TextView من خارج هذا الخيط كتحديثها من خلال خيوط اخرى (Background Threads) فهذا سيسبب تعطل تطبيقك.
الحل؟
هو انشاء خيط حاسوبي اخر لمهامك الثقيله. وهكذا يصبح لديك خطين حاسوبيين بداخل الـ Process الخاصة بتطبيقك, كالصورة التالية:
وتذكر ان الخيط الحاسوبي الرئيسي يطلق عليه المصطلحات التالية:
- الـ Main Thread.
- الـ UI Thread.
والخيوط الاخرى التي تنشئها تستطيع تسميتها كما تريد ولكن يطلق عليها بالمصطلحات التالية:
- الـ Background Thread.
- الـ Worker Thread.
في هذا الدرس تعرفنا على الخيط الحاسوبي الذي يوجد بداخل عملية تطبيقنا, ووظيفته هي نقل البيانات من تطبيقنا الى المعالج لمعالجتها. وتعرفنا على الخيط الحاسوبي الرئيسي وعدم ازدحامه بشفرتنا البرمجيه بل يجب علينا انشاء خيوط اخرى تسانده. في الدرس القادم سنغوص اكثر في الخيوط الحاسوبية وسنتعرف على مكوناتها.
المصادر والمراجع
- Processes and threads overview | Android Developers.
- Thread | Android Developers.
- Java language Specification - Chapter 17. Threads and Locks.
للمزيد راجع درس المقدمة.
نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.
محتوى الدورة
الكلمات الدليلية
عن الدرس
3 إعجاب |
2 متابع |
0 مشاركة |
4954 مشاهدات |
منذ 5 سنوات |
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !