بنيات بيانات ل متوازى البرمجة

يقدم الإصدار 4 من برنامج.NET Framework عدة أنواع جديدة مفيدة في البرمجة بالتوازي، بما في ذلك التعيين المتزامن التعيين فئات الأوليات المزامنة الخفيفة وأنواع للتهيئة البطيئة. يمكنك استخدم هذه الأنواع مع أية تعليمات برمجية لتطبيقات ذات مؤشرات ترابط متعددة، بما في ذلك مكتبة متوازى المهام و PLINQ.

فئات مجموعة المتزامنة

مجموعة الفئات في System.Collections.Concurrentتوفير مساحة الاسم مسار تنفيذ اﻷمن إضافة و إزالة العمليات التي تجنب التأمين كلما أمكن واستخدام التأمين تفصيلية بحيث يتم تأمين الضرورية. بعكس المجموعات التي تم تقديمها في إصدارات.NET Framework 1.0 و 2.0، لا يتطلب فئة مجموعة متزامنة رمز مستخدم اللازمة للتأمين أي أنه يقوم بالوصول إلى عناصر. مجموعة المتزامنة فئات يمكن ملحوظ تحسين أداء عبر أنواع مثل System.Collections.ArrayListو System.Collections.Generic.List<T>(مع مستخدم-implemented locking) في وحدات سيناريو الموقع مؤشرات ترابط متعددة بإضافة وإزالة عناصر من مجموعة.

يسرد الجدول التالي الفئات المتزامنة لمجموعة جديدة:

Type

الوصف

System.Collections.Concurrent.BlockingCollection<T>

يوفر حظر و إحاطة إمكانيات لمؤشر الترابط-الأمن المجموعات التي تقوم بتنفيذ System.Collections.Concurrent.IProducerConsumerCollection<T>. حظر مؤشرات ترابط المنتج في حالة عدم وجود فتحات توفر أو إذا كانت المجموعة هو كاملة. حظر عمليات جزئية مستهلك في حالة المجموعة هو فارغ. ويعتمد هذا النوع أيضا وصول غير مؤمن من قبل العملاء و منتجي. BlockingCollection<T>يمكن استخدامها كفئة أساسية أو نسخ sإلىre إلى حظر وإحاطة لأي فئة مجموعة يعتمدIEnumerable<T>.

System.Collections.Concurrent.ConcurrentBag<T>

إضافة تطبيق كيس مؤشر ترابط-الأمن الذي يوفر للتحجيم و الحصول على العمليات.

System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>

المتزامن و نوع القاموس قابل للتحجيم.

System.Collections.Concurrent.ConcurrentQueue<T>

المتزامن و قائمة انتظار FIFO قابلة للتحجيم.

System.Collections.Concurrent.ConcurrentStack<T>

المتزامن و مكدس LIFO قابلة للتحجيم.

لمزيد من المعلومات، راجع Thread-Safe Collections.

الأوليات المزامنة

الأوليات المزامنة الجديدة في System.Threadingمساحة الاسم بتمكين التزامن التفصيلية وأداء أسرع بتجنب كلفة آليات تأمين تم العثور عليها في قديمة متعدد العمليات تعليمات برمجية. بعض أنواع جديدة، مثل كـ System.Threading.Barrier System.Threading.CountdownEventقد لا يوجد نسخ في releكـes السابقة في إطار عمل.NET.

يلي جدول يسرد أنواع المزامنة الجديدة:

Type

الوصف

System.Threading.Barrier

قم بتمكين مؤشرات ترابط متعددة للعمل تشغيل خوارزمية في متوازى بواسطة توفير يؤشر عنده كل مهمة يمكنك الإشارة الخاصة به عند وصولها ثم حظر حتى بعض أو أن يكون لديك وصول الجميع المهام. لمزيد من المعلومات، راجع Barrier (.NET Framework).

System.Threading.CountdownEvent

يبسط تفرع و الانضمام السيناريوهات بواسطة توفير إليه Rendezvous سهلة. لمزيد من المعلومات، راجع CountdownEvent.

System.Threading.ManualResetEventSlim

أ المزامنة أساسية مثل System.Threading.ManualResetEvent. ManualResetEventSlimهو أفتح-الوزن ولكن فقط يمكن استخدامها للاتصال intra-عملية. لمزيد من المعلومات، راجع ManualResetEvent.

System.Threading.SemaphoreSlim

اﻷولى مزامنة التي تحد من عدد عمليات جزئية التي يمكن الوصول إلى مورد بشكل متزامن أو تجمع موارد. لمزيد من المعلومات، راجع الإشارات.

System.Threading.SpinLock

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

System.Threading.SpinWait

نوع خفيفة صغيرة زيادة ونقصان لوقت محدد وأخيراً وضع مؤشر ترابط في الولاية انتظار في الولاية زيادة أو نقصان حساب هو تجاوز. لمزيد من المعلومات، راجع SpinWait.

لمزيد من المعلومات، راجع:

فئات تهيئة البطيئة

بتهيئة البطيئة، وذاكرة لكائن هو غير المخصصة حتى هو المطلوبة. أن يحسن الأداء وتهيئة البطيئة بواسطة الانتشار عمليات تخصيص كائن بالتساوي عبر عمر أحد البرامج. يمكنك تمكين تهيئة البطيئة ل أي نوع مخصص بالتفاف نوع Lazy<T>.

يسرد الجدول التالي أنواع تهيئة البطيئة:

Type

الوصف

System.Lazy<T>

يوفر خفيفة، مؤشر ترابط-آمن البطيئة-تهيئة.

System.Threading.ThreadLocal<T>

توفير القيمة تهيئة ببط تشغيل أساس لكل مؤشر ترابط، مع كل مؤشر ترابط ببط-استدعاء وظيفة التهيئة.

System.Threading.LazyInitializer

يوفر ثابت وظائف تجنب الحاجة إلى يخصص أي مثيل مخصص، تهيئة البطيئة. بدلاً من ذلك، فإنها تستخدم مراجع إلى التأكد من أن تتم تهيئة الأهداف كما يتم الوصول إليها.

لمزيد من المعلومات، راجع Lazy Initialization.

استثناءات التجميعية

System.AggregateExceptionيمكن استخدام نوع لالتقاط الاستثناءات المتعددة التي يتم تم طرح الوقت نفسه تشغيل مؤشرات ترابط منفصلة، والعائد للانضمام مؤشر الترابط كاستثناء واحد. System.Threading.Tasks.Taskو System.Threading.Tasks.Parallelأنواع و PLINQ استخدم AggregateExceptionمكثف لهذا الغرض. للمزيد من المعلومات، راجع كيفية القيام بما يلي: معالجة استثناءات طرح بواسطة المهام وكيفية القيام بما يلي: استثناءات مؤشر في استعلام PLINQ.

راجع أيضًا:

المرجع

System.Collections.Concurrent

System.Threading

المبادئ

البرمجة المتوازية في .NET Framework