ماهو مفهوم Threading فى البرمجة | مطور ماهو مفهوم Threading فى البرمجة | مطور

ماهو مفهوم Threading فى البرمجة

مفهوم Threading من المفاهيم المدعومة فى الكثير من لغات البرمجة مثل جافا وبايثون وغيرها.

قبل البدء فى مفهوم Threading سنتعرف على مفهوم Process.

ماهى Process

العملية او Process هى ببساطة برنامج في حالة التنفيذ. فعندما يتم تحميل البرنامج فى RAM يتحول إلى Process.

ماهو Thread

هو مسارات متعددة لتنفيذ البرنامج

هذه المسارات يقوم المبرمج بتحديدها اثناء كتابة البرنامج.

هذه المسارات يتم استغلالها اثناء تنفيذ البرنامج لجعل البرنامج يتم تنفيذه بالتوازي Parallel والاستفادة من تعدد المعالجات Multi-CPU او تعدد الانويه فى المعالج الواحد Multi-cores.

حيث يتم تقسيم Process الواحدة إلى عدة Threads.

حيث يمكن تعريف Thread على انها Lightweight-process او بروسيس خفيفة الوزن.

threads-vs-process

مافائدة استخدام Thread

استخدام Threads فى البرنامج يحسن الاداء حيث يعطى امكانية لتنفيذ البرنامج بالتوازى فى حالة كان المعالج يدعم ذلك.

بالطبع لايمكن دائمًا استخدام Threads لانه احيانًا لايمكن تنفيذ البرنامج بالتوازي لان بعض الاجزاء فى البرنامج تكون معتمدة على الاخرى.

مثلًا لنفترض برنامج للحصول على ملفات من الانترنت ثم تخزينها فى ذاكرة الجهاز.

وهنا البرنامج يتكون من جزئين الجزء الاول الحصول على الملف من الانترنت والثانى تخزين الملف فى الجهاز.

لايمكن فى هذه الحالة وضع الجزء الاول فى Thread والثانى فى Thread اخرى لانه سيتم تنفيذه بالتوازي فى حين ان الجزء الثانى وهو تخزين الملف لايمكن ان يعمل دون ان يتم تنفيذ الجزء الاول وهو تحميل الملف من الانترنت.

ولكن فى حالات اخرى يصبح استخدام Threads امر ضروريًا.

امثلة على استخدام Threads

فى خادم ويب اباتشي Apache يتم توليد Process لكل مستخدم للسيرفر ومع ذلك يمكن تغيير الاعدادات ليتم استخدم Threads بدلًا من Processes حيث يعمل كل المستخدم على نفس الProcess ولكن Threads مختلفة.

وبهذا يتم تخفيض استهلاك الذاكرة لانه كما ذكرنا فإن Threads تعتبر Process ولكن اخف فى التخزين Lightweight-process ومع ذلك فان استخدام Threads فى هذه الحالة قد يؤدى لبعض المشاكل الامنية

مثال اخر شهير وهو GUI او الواجهة الرسومية للبرنامج  حيث يعمل GUI فى Thread مختلف عن العمليات التى يقوم بها البرنامج حتى تكون الواجهة الرسومية دائمًا متجاوبة.

فمثلًا نفترض برنامج لتحميل ملفات من الانترنت ويحتوي واجهة رسومية بها زر تحميل وعند الضغط على الزر يبدء التحميل.

فى هذه الحالة يجب ان تكون الواجهة الرسومية فى Thread و عملية تحميل الملف فى Thread مختلف بحيث عندم يبدء التحميل تظل الواجهة الرسومية تعمل وتتجاوب مع المستخدم.


كتب بواسطة عمرو العربى

مؤسس مطور

التعليقات

تعليق واحد على "ماهو مفهوم Threading فى البرمجة"

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*