تاسك باراليل ليبراري
هذه المقالة يتيمة حيث أن عددًا قليلاً من المقالات أو لا مقالات إطلاقًا تصل إليها. ساعد من فضلك بإضافة وصلات في المقالات ذات العلاقة. (يوليو_2011) |
هذا المقال أو المقطع ينقصه الاستشهاد بمصادر. الرجاء تحسين المقال بوضع مصادر مناسبة. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. وسم هذا القالب منذ: يوليو_2011 |
Task Parallel Library
هي (مكتبة) مجموعة من الأنماط العامة و(APIs) أي دوال في : (System.Threading و System.Threading.Tasks) namespaces في (.Net framework version 4.0).
الغرض من (TPL) هو جعل المطورين أكثر قدرة على الإنتاج من خلال تسهيل عملية إضافة العمل التفرعي أي عمل المهام في وقت واحد (concurrency) معاً مع مزامنة هذه العمل لمنع التضارب في برامجهم وتطبيقاتهم.
تقوم (TPL) بتعديل المزامنة (concerruncy) بشكل ديناميكي كي يتمكن التطبيق من استخدام كل المعالجات المتاحة.
إضافةً إلى ذلك تقوم (TPL) بتجزئة العمل وجدولة المهام في ما يسمى (ThreadPool) والعديد من المهام والتفاصيل منخفضة المستوى.
ياستخدام (TPL) يمكننا زيادة أداء البرنامج بشكل كبير مع الحفاظ على تركيزنا على هدف البرنامج الرئيسي، ومن الجدير بالذكر أن (TPL) سهلة وبسيطة.
لو تكلمنا عن (.Net framework 4.0) فإنه يجب القول أن (TPL) هي الطريقة المفضلة لكتابة (Multithreaded and parallel code). لكن مع ذلك ليس أي (code) مناسب لجعله تفرعياً أي توزيعه على عدة معالجات أو تقسيمه إلى أجزاء، فمثلاً إذا كان لدينا حلقة تنفذ عملاً بسيطاً جداً في كل تكرارٍ لها وفي بعض التكرارات لا تنفذ أي شيء، فإنه من الأفضل عدم تحويل ال (code) الخاص بها إلى (code) تفرعي لأنه سوف يجعل البرنامج بطيئاً أكثر مما كان عليه في حالة(code) مبرمج بطريقة تسلسلية. إذاً يمكننا القول أن (TPL) كانت عبارة عن إضافة من عدة إضافات تم إضافتها إلى (.Net 4) لدعم البرمجة التفرعية. فهي تزود (.Net 4) بالعديد من الخيارات (Options) من خلال : TaskCreationOptions, TaskContinuationOptions and Parallel options classes وهذه الخيارات مرفقة بأمثلة توضح الاستخدام السليم والخاطئ لها. يتم تطوير (TPL) من قبل (Microsoft Research) وفريق (CLR) في (Microsoft).
مثال لِ (code) مكتوب بِ (TPL) :
ParallelOptions parallelOptions = new ParallelOptions(); parallelOptions.MaxDegreeOfParallelism == threadCount; Parallel.For(0, dataBlockCount, parallelOptions, (dataBlockIndex) ==> { // do work });
البنى التفرعية لِ (.Net) :
إن (TPL) هي العنصر الأهم في التوسيعات الخاصة بالعمليات التفرعية لِ (.Net). إذ أنها كشفت النقاب عن العديد من البنى مثل (parallel For) و(ForEach loops)، وهذه البنى من الممكن أن تستخدم من قبل أي لغة من (.NET framework). إن عملية إنشاء المهام (Thread spawning) وإنهائها (Thread Terminating) وعمليات (scale) لعدد المهام بحسب عدد المعالجات المتاحة، هي من مهام المكتبة وحدها. تحوي (TPL) بنىً أخرى مثل (Task) و(Future)، (Task) تعني عملاً يمكن القيام به وتنفيذه بشكل مستقل عن باقي البرنامج، ويمكن القول أن (Task) مكافئة لِ (Thread) تقريباً. يتم ترتيب المهام بشكل رتل (queue) من قبل غرض من الصف (Task Manager)، إذ يقوم الأخير بجدولة (Tasks) من أجل تشغيلها على (OS Threads) المختلفة في ما يسمى (thread pool). البنية (Future) تقوم بإعادة نتيجة، هذه النتيجة تحسب باستخدام (thread) مغلفة من قبل الغرض (Future)، وتبقى هذه النتيجة في (buffer) حتى تطلب من قبل (thread) أخرى، ولو أن (thread) ما قامت بطلب الناتج ولم يكن الناتج جاهزاً بعد سوف تتم عملية (block) لل (task) الطالبة ريثما تصبح النتيجة المطلوبة جاهزة. الشكل التالي يوضح بنية (.NET Parallel extensions) التي طرحتها (Microsoft) والتي هي عبارة عن جزأين :
- Parallel LINQ أو PLINQ.
- Task Parallel Library أو TPL.
ملف:\1.jpgC:\Users\Mohammed\Desktop إن أي برنامج مكتوب بأي لغة من لغات (.NET) يمكنه أن يتعامل مع (TPL) ويستفيد من خدماتها في مجال البرمجة التفرعية. لقد تم طرح هذه المكتبة ضمن توسيعات (Microsoft) الداعمة للبنى التفرعية والمعالجات والنوى المتعددة، وكان أول إطلاق لها في November 29, 2007 كنسخة (CTP) وتم تجديدها في (December 2007 and June 2008).
من مزايا هذه البنية أيضاً
- Interoperability : والتي تعني إمكانية عمل أجزاء النظام مع بعضها بشكل صحيح.
- ) : وهذا ما يكفل عملية إدارة ذاكرة صحيحة ومعالجة استثناءات صحيحة أيضاً وأماناً أعلى.
- Independence : إن (.NET Framework) يتيح إمكانية تبادل الأنماط و(object instances) بين المكتبات والتطبيقات المكتوبة بلغات (.NET) المختلفة.
- عبارة عن مكتبة متاحة لكل لغات (.NET) وتتيح صفوفاً تغلف مجموعة من التوابع المشتركة والشائعة مثل القراءة والكتابة....
- Simplified Deployment.
- Security : إن (.NET) تتيح (Common security model) لكل تطبيقاتها.
- Portability.
مقارنة بين أداء برنامج يستخدم (TPL) وآخر لا يستخدم (TPL) :
لدينا حالتان :
- استخدام معالج متعدد النوى بدون استخدام (TPL) مع البرنامج الجاري تنفيذه.
- استخدام معالج متعدد النوى مع استخدام (TPL) مع البرنامج الجاري تنفيذه.
إن البرنامج الجاري تنفيذه هو عبارة عن برنامج ضغط ملفات. إن المحور (Y) هو محور الزمن، والزمن فيه مقدر بِ (ms). أما المحور (X) فهو يعبر عن حجم الملف المضغوط مقدراً بِ (MB). و سوف نلاحظ أنه مع استخدام (TPL) سيكون الوقت المستغرق في عملية الضغط أقصر بما يقارب أربع مرات. علماً أن هذا الفحص أجري على آلة من أربع معالجات (أربع نوى). ملف:C:\Users\Mohammed\Desktop\Untitled1.jpg يمكنك مشاهدة الاختبار على موقع (The code project). مواصفات الآلة المستخدمة في هذا الاختبار : ملف:C:\Users\Mohammed\Desktop\2.jpg
هذه المقالة غير مصنّفة
الرجاء المساعدة قالب:عنوان كامل|action=edit}} بتصنيف هذه المقالة، حتى تظهر في قائمة أو قوائم مع المقالات الأخرى الشبيهة. |