كل عام وأنتم بخير
ارجو شرح موضوع ال threading ..
وجزاكم الله خيرا
-----------------------------------------------------------------
من قال سبحان الله وبحمدة زرعت له في الجنة نخلة
كل عام وأنتم بخير
ارجو شرح موضوع ال threading ..
وجزاكم الله خيرا
-----------------------------------------------------------------
من قال سبحان الله وبحمدة زرعت له في الجنة نخلة
بص يا سيدي الصراحه أنا لم أدرس الموضوع بطريقه علميه صحيحه , ولكن بالبلدي كده الـ Threading هو انك تعمل مجموعة من الخطوات في صوره Sub يقوم الـ Processor بتنفيذها في مسار غير مسار البرنامج داخل الـ Processor ,والغرض من ذلك لكي يتم تنفيذها بسرعه , ومثال علي ذلك لو تعرف تعمل Thread مرر له Sub فيها msg وضع الكود الخاص بهذه العمليه في زر مثلا ثم اضغط علي الزر أكثر من مره , وأنظر الناتج .....,
أنظر الصوره , وأنظر المثال في المرفقات .....,,,
لو عايز تفهم أكتر حاول تظهر الـ msg من غير Threading وشوف هل تقدر تظهر أكتر من رساله في نفس الوقت ولا لأ ؟؟؟
وأنا أنتظر معك حد يشرح الموضوع بطريقه علميه , لأني للأسف لم أدرس الموضوع دراسة أكاديميه :(
بس عايز أقول ملحوظه ان ترجمة كلمة Threading هي عملية ادخال الخيط في ثقب الابره , (دقق في المعني ) ,,,
تم تعديل هذه المشاركة بواسطة hazzoom في 5 نوفمبر 2005 في 19:01
سلاااااااااااام
لي رجعة للموضوع في وقت اخر إن لم يسبقني أحد ...... ان شاء الله
لكن اعطوني وقت للتحضير ............
الموضوع ليس موضوعه سرعه ... الموضوع وما فيه هو جعل برنامجك يقوم بعمل أكثر من عمليه في نفس الوقت.
يستخدم الـ Threading في العمليات التي من المحتمل أن تأخذ وقت كبير حتى تنتهي , مثل عمل Scan على كل الـ Folders الموجوده في الجهاز ! أو قراءة ملف كبير جدا ! أو العمليات التي لن تنتهي الا بغلق البرنامج مثل عمل Listen على بورت معين دائما !
ان قمت بعمل عمليه مثل هؤلاء على نفس thread البرنامج بتاعك ... فسيتوقف برنامج عن الاستجابه لأنه مشغول جدا في عمل المهمه الطويله التي أمرته بها ولذلك فلن يجد الوقت ليستجيب للمستخدم عندما يضغط المستخدم على زر معين مثلا أو يدخل أى Input عموما ... والأمر من ذلك ستجده مشغول جدا لدرجة أنه لا يجد الوقت ليرسم نفسه !! فتجد البرنامج يتحول كله الى لون غريب و يتشوه شكله ( Windows Applications ) , لأنه لايجد الوقت لاعادة رسم نفسه على الشاشه ... حتى عندما يريد المستخدم غلقه فتجد البرنامج لا يغلق لأنه كما قلت لن يستجيب لأى Input من المستخدم وتجد الرساله الشهيره من Windows طلعت تقولك Application Not Responding.
ببساطه ... عندما تشغل برنامجك فانه يكون بداخل Process ... فقم بتقسيم تلك الـ Process الى عدة Threads كما تريد بجانب الـ Primary Thread ... واجعل الدوال المتوقع أن تأخذ وقت طويل في التنفيذ أن تعمل في Thread لوحدها حتى لا تعطل عمل الدوال الأخرى وحتى لا تجعل برنامجك لا يستجيب الى مدخلات المستخدم أثناء تنفيذها.
الكلام عن الـ Threading يطول جدا ... كمل انت بأه يا abdullah_02 :)
السلام عليكم
موضوع ال threading يتلخص ببساطة فى ان عند تنفيذ البرنامج تبدأ ال process فى العمل يمكن ان نمثل هذه ال بروسس انها صندوق كبير بداخله مجموعة من العلب الملونة هذه العلب هى ال threads و التى يتم من خلالها تنفيذ البرنامج و كل واحدة لها وقت محدد للتنفيذ هل وضحت؟
اخي الكريم بختصار :
تسمح تكنولوجيا ال Threading بالمعالجة المتوازية على نفس المعالج وذلك من خلال تقسيم المهام على المعالج وعمل Session منفصلة لكل برنامج وهو ما يسمى بال Multitasking.. وهنا لا يؤثر البرنامج على موارد النظام بشكل كبير انظر الشكل التالي :
لاحظ انه قبل اضافة ال Thread كان البرنامج يعمل على منطقة ال Global Area وهذا هو سبب البطء الشديد وبعد استخدام ال Thread تم عمل Session خاص للبرنامج بحيث يعمل بشكل متوازي مع بقية البرامج ..
ولاستخدام ال Thread في البرنامج يلزم أولا تعريف المكتبة او انيم سبيس الخاص بها وهو
using System.Threading;
ثم اشتقاق اوبجكت منه ودراج اسم الميثود التي تريد عمل Thread لها كما يلي :
Thread myth; myth= new Thread (new System.Threading .ThreadStart(your_method_name)); myth.Start ();
ميزة ال Thread رائعة جدا اذ تمكنك من تشغيل اكثر من Thread وفي نفس الوقت وفي نفس البرنامج وهو ما يسمى بال Multithreading .
سلسلة دروس تعلم برمجة الشبكات وبرتوكول TCP/IP
تم تعديل هذه المشاركة بواسطة fmo_82 في 6 نوفمبر 2005 في 10:42
أعتقد أنك تقصد يعمل بشكل متوازي مع بقية الـ Threads الموجوده في الـ Process ... فالـ Threads تعمل متوازيه مع الـ Threads الموجوده في الـ Process , و الـ Process تعمل متوازيه مع الـ Processes الأخرى التي تكون تابعه لبرامج أخرى مثلا.اقتباسوبعد استخدام ال Thread تم عمل Session خاص للبرنامج بحيث يعمل بشكل متوازي مع بقية البرامج
اشكرك اخي معتز , بستخدام ال Thread يصبح لكل برنامج جزء خاص منفصل عن بقية البرامج في ال Processes List حيث يقوم المعالج بالمرور عليه كل فترة زمنية معينة حسب الأولويات المحددة من قبل نظام التشغيل ومن الطبيعي ان يكون لكل برنامج Thread واحد او اكثر حسب الحاجة لذلك قلت انه (يعمل بشكل متوازي مع بقية البرامج) اذا افترضنا ان كل برنامج يحوي Thread خاص به .
تم تعديل هذه المشاركة بواسطة fmo_82 في 6 نوفمبر 2005 في 12:39
اقتباسالموضوع ليس موضوعه سرعه ... الموضوع وما فيه هو جعل برنامجك يقوم بعمل أكثر من عمليه في نفس الوقت
كلامك صحيح أخي معتز , لكن أنا لم أقصد سرعه بالمعني المعهود , لكن قصدي ان العمليات التي سيتم تنفيذها في Thread لن تؤثر علي مسار البرنامج الأصلي , وبالتالي لن يصبح البرنامج الأصلي بطئ ولذلك الـ Threading يعتبر علاج للحاله المعروفه NotResponding , عندما تصبح شاشة البرنامج بيضاء وتضطر الي اغلاقه ,
و جزاكم الله خيرا ,,,
جزاكم الله كل خير ونفع الله بكم وبنا
هذا الموضوع مغلق.