تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] شرح مثال عن المسارات المتعددة (MultiThreading)
#1
Lightbulb 
السلام عليكم ورحمة الله وبركاته

البرمجة المتقدمة => المسارات المتعددة : MultiThreading




– في تصميم الانظمة المحاسبية أو الادارية أو غيرة يوجد مهام عند تنفيذها في وقت تشغيل النظام او الضغط على ألازرار التفاعلية تأثر على سرعة تفاعل النظام مع المستخدم أو التعليق بالنظام لفترة زمنية ،
ومن بعض الاسباب ان المهام تنفذ اكود كثيره مما يؤدي الى البطئ او تعليق في شاشة النظام لفترة زمنيه.

مثلا عند تشغيل النظام يقوم البرنامج بأضهار أحصائيات حسابية للمستخدم أو اضهار أشعارات بمعلومات تفيد المستخدم ،

وهذه المهام تنفذ أوامر كثيرة مثل جلب البيانات من عدة جداول من قاعدة البيانات وغيرة ، وقد تحتوي بعض المهام على خوارزميات حسابية لحساب النتائج ،

[b]كذالك من بعض الامثله مهام التأكد من نفاذ كمية المنتجات او توفرها في عمليات الطلب او الحجز .[/b]

[b]كثيرا هي الامثلة التي تجعل المبرمج يحتاج الى تنفيذ هذة المهام دون التأثير على سرعة تفاعل النظام مع المستخدم .[/b]

[b]يوجد في البرمجة المتقدمة تقنية تسمى ” المسارات المتعددة MultiThreading “[/b]

[b]طبعا تعرف نظم التشغيل الحديثة بأنها ” systems_multitasking ” وهو ما يعني امكانية تنفيذ اكثر من مهمة في نفس الوقت ، لذا تجد أن بامكانك تشغيل عدة برامج في نفس الوقت في جهازك الحاسوبي.[/b]

[b]وكذالك أيضا يمكنك ان تجعل البرنامج الواحد قادر على تنفيذ اكثر من عملية في نفس الوقت دون أن يكون لهما تأثير متعارض ، وهذا ما يعرف باسم . [b]MultiThreading[/b][/b]

[b]فعندما تجعل نظامك يعمل بعدة مسارات لتنفيذ المهام والاجراءات سوف تجعل برنامجك يعمل بسرعة اكثر دون التأثير على الشاشات التفاعلية مع المستخدم.[/b]

[b]يمكنك تقسيم المهام الى اجزاء صغيرة في دوال برمجية ،ومن ثم انشاء عدة مسارات thread واسناد اليها الدوال المجزئة ،ومن ثم تشغيلها في وقت واحد.[/b]

[b]* سيعمل ذالك الى جعل برنامجك لا يتأثر بتنفيذ تلك المهام في الشاشة التفاعلية ،وستعمل المهام كأنها برامج أخرى تنفذ ما بداخلها من أوامر من ثم تغلق ،وعند انتهاء تنفيذها ستقوم بأخذ النتائج وعرضها في الشاشة.[/b]

[b]* طبعا عند تجزئة المهام وتشغيلها في وقت واحد ستعمل على تنفيذ المهام بشكل اسرع كأنك تشغل عدة برامج في وقت واحد.[/b]



– كذالك تفيدك المسارات المتعددة في أضهار الاشعارات الدورية الخاصة بالتغيرات بالنظام والبيانات .

كذالك من أمثله استخدام المسارات المتعددة برنامج الماسنجر يتيح لك ارسال ملفات والحديث واستخدام الكاميرا والتحدث مع اكثر من شخص بنفس الوقت ، وهو ما لم يكن الماسنجر قادراً عليه لو لم يكن يفصل هذه المهام داخل البرنامج الواحد عن بعضها،

ولأخذ نبذه عن ” المسارات المتعددة " MultiThreading " :-

اولا جميع الأوامر التي سنتعامل معها تقع تحت نطاق الأسماء System.Threading ، لذا قم باستيراده أولاً .

العناصر الاساسية داخل مجال الاسماء هذه هي :-

Thread : لتعريف Thread جديد والتعامل معه .

ThreadPool : مجموعة من ال Threads يمكن لها التعامل فيما بينها .


ThreadState : Enum يحتوي على عدة حالات لأي Thread .


ThreadStart : بدء التنفيذ في Thread .


ThreadPriority : تحديد اولوية هذا ال Thread .



ألان لنفرض انك قمت بتجزئة المهام الى عدة دوال بالشكل التالي

كود :
public static void function_1(){…}
public static void function_2(){…}


سوف تقوم بأشاء مسار جديد بالشكل التالي

كود :
Thread thread_function_1 =new Thread(new ThreadStart(function_1));
Thread thread_function_2 =new Thread(function_2);



وتشغيل المسار بالشكل التالي

كود :
thread_function_1.Start();
thread_function_2.Start();


هاكذا في حال كانت الدوال من نوع void ولا تحتوي على براميترات

أما اذا كانت من نوع void وتحتوي على باراميتر واحد فقط فسوف تنشئ الدوال بالشكل التالي


كود :
public static void function_1(object name_obj){…}
public static void function_2(object name_obj){…}
....




وسوف تقوم بأشاء مسار جديد بالشكل التالي

كود :
Thread thread_function_1 =new Thread(new ParameterizedThreadStart(function_1));
Thread thread_function_2 =new Thread(new ParameterizedThreadStart(function_2));


وتشغيل المسار بالشكل التالي

كود :
thread_function_1.Start(Value_object);
thread_function_2.Start(Value_object);


لو كنت تود استخدام دالة تعود بقيمة فلا يمكن استخدام ThreadStart ولكن يمكن استخدام

BeginInvoke() وقراءة الناتج في EndInvoke()



الان تستطيع ان تعمل مسارات متعددة لنظامك وجعله يعمل بشكل اسرع وبدون تعليق أو بطئ أثناء تفاعل المستخدم مع النظام .

مصدر المعلومات :-
المسارات المتعددة (MultiThreading)



اسأل المولى ان قد وفقني في افادتكم في هذة المعلومات

وفق الله الجميع
الرد }}}
تم الشكر بواسطة: Hamza lads


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مثال عن الشجرة المحاسبية بأداة TreeListView asemshahen5 2 3,413 04-03-24, 09:31 PM
آخر رد: alnagi
  [مثال] مثال انشاء زر دائري Kamil 0 223 08-01-24, 07:39 PM
آخر رد: Kamil
Lightbulb [مثال] شرح مثال عن Overloading Function التحميل الزائد للدوال rabia al hamdani 0 1,246 11-01-23, 11:17 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن إستخدام تقنية Static في الأنظمة البرمجية rabia al hamdani 0 781 11-01-23, 11:02 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن المفوضات (Delegate) rabia al hamdani 0 866 11-01-23, 10:40 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن (Try-Catch) أقتناص الاخطاء Catching Exceptions rabia al hamdani 0 793 11-01-23, 10:34 PM
آخر رد: rabia al hamdani
  مثال عن شاشة طلبات المطبخ . asemshahen5 0 1,351 21-11-21, 03:46 PM
آخر رد: asemshahen5
  مثال عن إضافة خصائص و أحداث للادوات . asemshahen5 3 2,439 24-10-21, 10:11 PM
آخر رد: zageteh
  السلام عليكم ورحمة الله و بركاته هذا مثال عن تنشيط المنتج و تشفير السيريال . asemshahen5 5 3,852 15-08-21, 01:05 PM
آخر رد: devante.celvin
  مثال عن الداتا غريد فيو [منقول]. asemshahen5 0 1,701 23-12-20, 08:11 PM
آخر رد: asemshahen5

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم