امتدادات متوازية
كانت Parallel Extensions الاسم التطويري لمكتبة إدارة التزامن ، طُوّرت بالتعاون بين قسم الأبحاث في مايكروسوفت وفريق CLR في مايكروسوفت . صدرت المكتبة في الإصدار 4.0 من إطار عمل .NET . [ 1 ] تتألف المكتبة من جزأين: Parallel LINQ (PLINQ) و Task Parallel Library (TPL). [ 2 ] [ 3 ] كما تتضمن مجموعة من هياكل بيانات التنسيق (CDS)، وهي مجموعات من هياكل البيانات تُستخدم لمزامنة وتنسيق تنفيذ المهام المتزامنة. [ 4 ]
لينكو المتوازي
PLINQ ، أو Parallel LINQ ، هي تقنية تُتيح تنفيذ الاستعلامات على الكائنات (LINQ to Objects) وبيانات XML (LINQ to XML) بالتوازي. تهدف PLINQ إلى إتاحة توازي البيانات باستخدام الاستعلامات. [ 2 ] يمكن لـ PLINQ تنفيذ أي عملية حسابية على الكائنات مُنفذة كاستعلامات بالتوازي. مع ذلك، يجب أن تُنفذ الكائنات الواجهة IParallelEnumerableالمُعرّفة بواسطة PLINQ نفسها. تستخدم PLINQ داخليًا مكتبة TPL للتنفيذ. [ 4 ] [ 5 ]
مكتبة المهام المتوازية
مكتبة التوازي للمهام ( TPL ) هي مكون التوازي للمهام في ملحقات التوازي لـ .NET. [ 6 ] توفر هذه المكتبة بنيات متوازية مثل الحلقات المتوازية For، ForEachباستخدام استدعاءات الدوال العادية والمفوضين ، مما يسمح باستخدام هذه البنيات من أي لغة سطر أوامر . تتولى المكتبة نفسها مهمة إنشاء وإنهاء سلاسل العمليات ، بالإضافة إلى تحديد عددها وفقًا لعدد المعالجات المتاحة، [ 3 ] باستخدام مُجدول سرقة العمل . [ 7 ]
تتضمن مكتبة TPL أيضًا بنيات أخرى مثل Task و Future . المهمة هي إجراء يمكن تنفيذه بشكل مستقل عن بقية البرنامج. وبهذا المعنى، فهي مكافئة دلاليًا للخيط، إلا أنها كائن أخف وزنًا ولا تتطلب إنشاء خيط نظام تشغيل. تُضاف المهام إلى قائمة الانتظار بواسطة كائن Task Manager ، ويتم جدولة تنفيذها على خيوط نظام تشغيل متعددة في مجمع الخيوط عند حلول دورها.
المستقبل هو مهمة تُعيد نتيجة. تُحسب النتيجة في سلسلة عمليات خلفية مُغلّفة بكائن المستقبل ، وتُخزّن مؤقتًا حتى يتم استرجاعها. [ 3 ] إذا جرت محاولة لاسترجاع النتيجة قبل حسابها، فسيتم حظر سلسلة العمليات الطالبة حتى تصبح النتيجة متاحة. [ 6 ]
البنية الأخرى لـ TPL هي فئة Parallel . توفر TPL شكلاً أساسياً من التوازي المنظم عبر ثلاث طرق ثابتة في فئة Parallel:
- Parallel.Invoke
- ينفذ مجموعة من أوامر التنفيذ بالتوازي، ثم ينتظر اكتمالها.
- موازية لـ
- المكافئ المتوازي لحلقة for في لغة C#
- Parallel.ForEach
- المكافئ المتوازي لحلقة foreach في لغة C#
بنيان
المفهوم الأساسي في الإضافات المتوازية لـ .NET هو "المهام" Task، وهي وحدة برمجية صغيرة، تُمثل عادةً بدالة لامدا ، ويمكن تنفيذها بشكل مستقل. يوفر كل من PLINQ وTPL API طرقًا لإنشاء هذه المهام؛ حيث يقسم PLINQ الاستعلام إلى مهام أصغر، بينما تقسم طرق "التكرار" و Parallel.For" التكرار " حلقة تكرارية إلى مهام.Parallel.ForEachParallel.Invoke
يتضمن PFX Task Managerكائنًا يُجدول المهام للتنفيذ. يحتوي مدير المهام على قائمة انتظار عامة للمهام، والتي تُنفذ لاحقًا. كما أنه يُغلف عدة سلاسل تنفيذ تُنفذ عليها المهام. افتراضيًا، يتم إنشاء عدد من سلاسل التنفيذ مساويًا لعدد المعالجات (أو أنوية المعالج) في النظام، مع إمكانية تعديل هذا العدد يدويًا. ترتبط كل سلسلة تنفيذ بقائمة انتظار خاصة بها. عندما تكون السلسلة في وضع الخمول، تختار مجموعة من المهام وتضعها في قائمتها المحلية، حيث تُنفذ واحدة تلو الأخرى. إذا كانت قائمة الانتظار العامة فارغة، تبحث السلسلة عن المهام في قوائم انتظار نظيراتها، وتختار المهام التي بقيت في القائمة لأطول فترة ( سرقة المهام ). أثناء التنفيذ، تُنفذ المهام بشكل مستقل، بحيث يكون تغيير حالة أي مهمة مستقلًا عن غيرها. ونتيجة لذلك، إذا كانت تستخدم موردًا مشتركًا، فلا يزال يتعين مزامنتها يدويًا باستخدام الأقفال أو بنيات أخرى.
انظر أيضاً
- وقت تشغيل التزامن والتنسيق
- ينضم
- Cilk / Cilk Plus – تقنية مماثلة للغة C و C++
- Grand Central Dispatch – تقنية مماثلة في نظام التشغيل Mac OS X 10.6 تم تطويرها بواسطة Apple .
- التزامن في جافا - تقنية مماثلة في جافا (المعروفة أيضًا باسم JSR 166 ).
- وحدات بناء الخيوط (TBB) - تقنية مماثلة للغة C++ متاحة للعديد من الأنظمة التي أنشأتها شركة Intel في الأصل (وهي أيضًا مفتوحة المصدر).
- نمط بركة الخيوط
- التوازي بين المهام
- ReactiveX (الامتدادات التفاعلية)
مراجع
- ↑ "ما الجديد في إطار عمل .NET 4" . تم الاطلاع عليه بتاريخ 21 سبتمبر 2011 .
- 1 2 "البرمجة في عصر التزامن: البرمجة المتزامنة باستخدام PFX" . تم الاطلاع عليه بتاريخ 16 أكتوبر 2007 .
- 1 2 3 "مجلة MSDN: مكتبة المهام المتوازية" . مؤرشف من الأصل بتاريخ 14 أكتوبر 2007. تم الاطلاع عليه بتاريخ 16 أكتوبر 2007 .
- 1 2 "يونيو 2008 CTP - ملحقات متوازية لـ .NET FX" . تم الاطلاع عليه في 6 أغسطس 2008 .
- ↑ "تجميعات أكثر قوة في PLINQ" . تم الاطلاع عليه بتاريخ 6 أغسطس 2008 .
- 1 2 دافي، جو (2009). البرمجة المتزامنة على نظام ويندوز . الصفحات 887-929 . ISBN 978-0321434821.
- ^ ليجين، دان؛ شولت، ولفرام. بوركهارت، سيباستيان (2009). “تصميم مكتبة المهام الموازية”. إشعارات ACM SIGPLAN . 44 (10): 227.سيتيسيركس 10.1.1.146.4197 . دوى : 10.1145/1639949.1640106 .
روابط خارجية
- مصطلحات .NET
- مكتبات البرمجة المتزامنة
