تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Multi Threading
#1
كاتب الموضوع : !!! BoriS !!!

بسم الله الرحمن الرحيم وبه نستعين
والصلاة والسلام على أشرف الخلق أجميع سيدنا محمد صلى الله عليه وسلم

الــ Multi Threading :

Thread : اى المسار هو عبارة عن مسار او طريق يتبعة المعالج ال Processor لتنفيذ مهمة معين أو كود معين ، كل مسار تنفيذ واحد يكون تابع لبرنامج او كود أو مهمة واحدة

البرنامج الذى يؤدى مهمة معينة فى وقت معين يسمى برنامج Single Thread Process والبرنامج الذى يقوم بأداء أكثر من مهمة اى يحتوى على مسارات تنفيذ يسمى Multi Thraed Proccess

تفيدك مسارات التنفيذ Multi Threading فى أمكانية قيام البرنامج بأداء أكثر من مهمة فى وقت واحد كعمل Search داخل DB و Sort فى نفس الوقت
حتى نستوعب ماهو ال Thread


لديك برنامج يقوم بثلاث مهام :

1- Claer History
2- Clear Cookies
3- Open Internet explorer

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

أما أن كان البرنامج متعدد المسارات سيتم تنفيذ الثلاث عمليات السابقة فى نفس الوقت أو حسب الاولوية Priority التى سنتطرق اليها لاحقا
بأذن الله ،،،


أذا كان لديك مجمع Assembly او برنامج يقوم بحفظ بيانات داخل قاعدة البيانات ويظهر بيانات اخرى من نفس قاعدة البيانات

فأن قمت بأستخدام مسار تنفيذى واحد ستتم عملية قبل الاخرى ولكن أن قمنا بأستخدام Multi Threading سنقوم بالحفظ والاظهار فى نفس الوقت ومن هنا تاتى فائدة Multi Threading فمن خلالها تستطيع جعل أظهار البيانات فى مسار مستقل وبالتالى ستضمن سرعة فى أظهار البيانات من منطلق ال Optimization

فوائد Multi Threading لاتعد ولاتحصى يكفى ان تعلم ان ميكروسوفت ويندوز مبنى على أساس ال Multi Threading وللتأكد بنفسك قمت بالضغط على ctrl + alt + del ثــم Process لترى المسارات التى تستخدمها وهى كما قلنا "كل برنامج تم تشغيلة وذهب لل Memory يسمى Thread

تستطيع من هذه النافذة فهم معنى ال Priority :

ال Priority الاولوية :

هى أمكانية أعطاء أولوية أو وقت أضافى للمعالج لاداء التعليمات والاوامر الخاصة ل Thread معين
من خلال الاولوية تستطيع تفير الاسبقية لاى مسار تنفيذ تريده سواء من داخل Windows Task Manager او من داخل الVb.net

نظام تشغيل ويندوز أكس بى نظام متعدد المهام اى يستطيع تشغيل اكثر من برنامج فى نفس الوقت ويقوم بتوزيع الوقت اللازم لاداء التعليمات والاوامر لكل مسار على حسب الاسبقية او نشاط نافذة البرنامج أما فى الاصدارات السابقة فعملية التوزيع تتم بالتساوى مع تجاهل النوافذ النشطة والغير نشطة

اى ان البرنامج الذى تقوم بعمل Activate له له وقت معالجة اسرع وأكثر على عكس البرنامج الذى تقوم بعمل Minimize له
كمثال أنت تستخدم vb.net وتقوم بتشغيل الريل بلير .
يقوم ويندوز بأعطاء ال vb.net وقت معالجة أكثر لانه هو النافذة النشطة أو من خلالك أنت بأستخدام Windows Task MANAGER ثم Set Priority

أنواع مسارات التنفيذ :

1- مسارات التنفيذ الحرة :
هى مسارات تنفيذ تستطيع الوصول الى متغيرات البرنامج العامة حتى وان كانت تستخدم من قبل مسار تنفيذ أخر مما يسبب التعارضات بين المتغيرات العامة للبرنامج المستخدمة من خلال اكثر من مسار تنفيذى
اى عند تعريف x كــا Int32 مثلا
فى مسار تنفيذ معين

كود :
[color=#000000][COLOR=#0000bb]x [/color][color=#007700]= [/color][COLOR=#0000bb]25
[/COLOR][color=#007700]if [/color][color=#0000bb]x [/color][color=#007700]= [/color][COLOR=#0000bb]25 then
x [/COLOR][color=#007700]+=[/color][COLOR=#0000bb]1
end [/COLOR][COLOR=#007700]if  
[/COLOR][/COLOR]

وفى مسار أخر

كود :
[color=#000000][COLOR=#007700]if [/color][color=#0000bb]x [/color][color=#007700]= [/color][COLOR=#0000bb]25 then
x[/COLOR][color=#007700]-=[/color][COLOR=#0000bb]1
end [/COLOR][COLOR=#007700]if  
[/COLOR][/COLOR]

ومن خلال ال قيمة x سوف نقوم بأداء مهمة معين فى كل شرط

"هذا مثال فقط على التعارضات Free Threads Exceptions تستطيع العمل بها ولكن مع أستخدام تقنية التزامن Synchronization سيأتى ذكرها لاحقا

2- مسارات التنفيذ المتباعدة Apartment :
فى هذا النوع يتم تخصيص متغيرات خاصة لكل مسار Thread

بعد كل هذا الكلام النظرى سنقوم بالتطبيق وعلينا معرفة أن ال Multi Threading هو من أعقد المبادى والتقنيات البرمجية ...

أولا : Imports System.Threading

علينا أنشاء Variable من الفئة THread مع ضرورة أرسال ال Parammter فى وقت التصريح لكى نقوم بمنادة ال Sub الذى سوف يتم تحميلة داخل المسار أو تشغيل من داخل المسار "شبية بالــ Events كــ Dim WithEvevnts أو Addhandler ومثل ال Delegate أيضا "

كود
Dim OneThread as new Thread (Addressof BorisSub)
OneThread.start
Msgbox ("The Main Thread")
Sub BorisSub
Msgbox("One Thread")
end sub


فى الكود السابق قمنا بأنشاء مسار تنفيذ يقوم بتنفيذ Sub معين وهو BorisSub

والحديث له بقية...
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Threading in Windows Forms Applications RaggiTech 1 2,340 01-10-12, 07:36 PM
آخر رد: RaggiTech

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


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