مفهوم الثريد thread:
كل المبرمجين على دراية بكتابة البرامج المتسلسلة، ربما تكون قد كتبت برنامجًا يعرض (!Hello World) أو برنامجًا يعيد ترتيب قائمة أسماء أو يحسب قائمة الأعداد الأولية، هذه برامج متسلسلة، أي أن لكل منها بداية وتسلسل تنفيذ ونهاية، في أي وقت خلال وقت تشغيل البرنامج، هناك نقطة واحدة للتنفيذ.
ويعرف الثريد (thread) بأنه التدفق الفردي تسلسلي للتحكم داخل البرنامج، والثريد مشابه للبرامج المتسلسلة الموصوفة سابقًا، حيث يحتوي الثريد الفردي أيضًا على بداية وتسلسل ونهاية، في أي وقت خلال وقت تشغيل سلسلة الرسائل، هناك نقطة واحدة للتنفيذ، ومع ذلك، فإن الثريد نفسه ليس برنامجًا؛ لأن لا يمكن تشغيله من تلقاء نفسه، بدلا من ذلك، يتم تشغيله داخل البرنامج، يوضح الشكل التالي هذه العلاقة:
الإثارة الحقيقية المحيطة بالثريد لا تتعلق بثريد واحد متسلسل، بالأحرى، فإن الأمر يتعلق باستخدام ثريدز متعددة تعمل في نفس الوقت، وتؤدي مهام مختلفة في برنامج واحد، هذا الاستخدام موضح في الشكل التالي:
بعض الكتب تسمي الثريد بالعملية خفيفة الوزن، حيث يشبه الثريد العملية الحقيقية من حيث أن كلاهما لهما تدفق تسلسلي واحد للتحكم، مع ذلك، يعتبر الثريد خفيف الوزن؛ لأنه يعمل في سياق برنامج كامل ويستفيد من الموارد المخصصة لذلك البرنامج وبيئة البرنامج، كتدفق تسلسلي للتحكم، يجب على الثريد اقتطاع بعض موارده الخاصة داخل برنامج قيد التشغيل، على سبيل المثال، يجب أن يكون للثريد مكدس التنفيذ الخاص به وعدّاد البرنامج، والكود الذي يعمل داخل الثريد يعمل فقط ضمن هذا السياق.
فوائد استخدام الثريد:
الاتصالات بين threads:
يعد الاتصال بين مجموعة من “threads” أكثر كفاءة وأسهل في الاستخدام من الاتصال بين العمليات، نظرًا لأن جميع الثريدز ضمن عملية تشتركون في نفس مساحة العنوان، فلا داعي لاستخدام ذاكرة مشتركة، وحماية البيانات المشتركة من الوصول المتزامن باستخدام كائنات المزامنة أو أدوات المزامنة الأخرى، المزامنة التي توفرها مكتبة الثريد لتنفيذ أدوات التزامن مرنة وقوية، يمكن أن تحل هذه الأدوات محل وسائل الاتصال التقليدية بين العمليات، مثل: قوائم انتظار الرسائل، يمكن استخدام الأنابيب كمسار اتصال بين الثريدز.
أنظمة المعالجات المتعددة:
في نظام متعدد المعالجات، يمكن تشغيل مجموعة ثريدز متعددة بشكل متزامن على وحدات معالجة مركزية متعددة، لذلك، يمكن تشغيل البرامج متعددة مؤشرات الترابط بشكل أسرع بكثير من الأنظمة أحادية المعالج، يمكن أن تكون أيضًا أسرع من برنامج يستخدم عمليات متعددة، لأن “threads” تتطلب موارد أقل وتنتج أقل من الحمل، على سبيل المثال، يمكن أن يكون تبديل بين “threads” في نفس العملية أسرع.
أخيرًا، تتمثل الميزة الرئيسية لاستخدام الثريدز في أن برنامجًا واحدًا متعدد الثريد سيعمل على نظام أحادي المعالجات، ولكن يمكنه الاستفادة بشكل طبيعي من نظام متعدد المعالجات، دون إعادة ترجمة البرنامج.
تطبيق لاستخدام الثريد:
متصفح الويب هو مثال على تطبيق استخدام الثريد المتعدد، في المتصفح نموذجي، يمكنك تصفّح صفحة أثناء تنزيل برنامج صغير أو صورة، وتشغيل الرسوم المتحركة والصوت بشكل متزامن، وطباعة صفحة في الخلفية أثناء تنزيل صفحة جديدة، أو مشاهدة ثلاث خوارزميات ترتيب يتم تشغيلها حتى النهاية.