إدارة و مدارة مؤشر الترابط التشعبي في Windows Microsoft Office 2010 Suite
إدارة الجميع عمليات جزئية هو الانتهاء من خلال Threadفئة، بما في ذلك عمليات جزئية التي تم إنشاؤها بواسطة وقت تشغيل اللغة العامة وتلك التي يتم إنشاؤها خارج وقت التشغيل الذي أدخل في بيئة مدارة بتنفيذ تعليمات برمجية. وقت التشغيل يراقب الجميع عمليات جزئية في عملية به أن أي وقت مضى بتنفيذ تعليمات برمجية ضمن مدارة بيئة تنفيذ. لا تتبع أي غير ذلك عمليات جزئية. ويمكن إدخال مؤشرات الترابط بيئة تنفيذ المدارة من خلال توافق COM (لأن وقت التشغيل بالكشف عن الكائنات التي تمت إدارتها ككائنات COM إلى العالم غير مدار)، دالة DllGetClassObject() COM واستدعاء النظام الأساسي.
عند قيام مؤشر ترابط غير مدارة بإدخال وقت التشغيل من خلال، على سبيل المثال، COM callable برنامج تضمين، يتحقق النظام sإلىre مسار التنفيذ المحلي لمؤشر الترابط هذا إلى البحث عن كائن داخلية التي تمت إدارتها مؤشر الترابط. إذا كان ملف هو العثور على وقت التشغيل هو علم مسبقاً بترتيب هو مؤشر الترابط. إذا تعذر العثور على واحد، على الرغم من ذلك، وقت التشغيل إنشاء كائن "مؤشر ترابط و يثبتها في المخزن المحلي مؤشر ترابط لمؤشر ترابط هذا.
في مدارة ترابط، هو من مؤشر ترابط.GetHashCode مستقرة مدارة مؤشر ترابط التعريف. مدة بقائها مؤشر ترابط الخاص بك، سوف لا collide مع القيمة من أي مؤشر آخر، بغض النظر عن مجال تطبيق من خلالها الحصول على هذه القيمة.
ملاحظة |
---|
يحتوي النظام التشغيل من ThreadId لا توجد علاقة ثابتة إلى مؤشر ترابط مدارة، لأنه يمكن لمضيف غير مدار للتحكم في العلاقة بين إدارتها وغير مدارة عمليات جزئية.على وجه الخصوص، يمكن أن يقوم مضيف معقدة باستخدام "واجهة برمجة تطبيقات باستخدام الألياف البصرية" إلى جدولة العديد من عمليات جزئية التي تتم إدارتها من مؤشر ترابط النظام التشغيل نفسه، أو إلى حرك مؤشر ترابط مدارة بين عمليات جزئية لالنظام تشغيل مختلف. |
تعيين من مؤشر الترابط التشعبي Win32 إلى التي تمت إدارتها مؤشر الترابط التشعبي
التالي جدول خرائط Win32 ترابط عناصر إلى بها وقت التشغيل التقريبي مكافئة. لاحظ أن هذا التعيين لا يمثل وظائف مماثلة. على سبيل المثال، من TerminateThread لا ينفذ أخيرا عبارات أو تحرير إعداد موارد، ثم لا يتم منعك. ومع ذلك، Thread.Abortبتنفيذ الجميع تعليمات برمجية العودة إلى الحالة السابقة و reclaims الجميع موارد، ويمكن أن يتم رفض باستخدام ResetAbort. تأكد من إلى قراءة وثائق عن قرب قبل إجراء أية افتراضات حول الأداء الوظيفي.
في Win32 |
في وقت تشغيل اللغة العامة |
---|---|
CreateThread |
مجموعة من مؤشر ترابط و ThreadStart |
TerminateThread |
|
SuspendThread |
|
ResumeThread |
|
السكون |
|
WaitForSingleObject تشغيل مقبض مؤشر ترابط |
|
ExitThread |
لا يوجد بديل |
GetCurrentThread |
|
SetThreadPriority |
|
لا يوجد بديل |
|
لا يوجد بديل |
|
إغلاق إلى CoInitializeEx (OLE32.DLL) |
عمليات جزئية التي تمت إدارتها و Apartments COM
يمكن وضع علامة لمؤشر ترابط مدارة للإشارة إلى أنه سيقوم باستضافة الحيز مؤشر ترابط مفرد أو ذات مؤشرات ترابط متعددة. GetApartmentState، SetApartmentState، و TrySetApartmentStateالأساليب الخاصة Threadبإرجاع الفئة وقم بتعيين الولاية الحيز لمسار التنفيذ. إذا لم يتم الحالة التعيين، GetApartmentStateبإرجاع من ApartmentState.مجهول.
ملاحظة |
---|
في إصدارات.NET Framework 1.0 و 1.1، ApartmentStateخاصية هو يستخدم للحصول على وقم بتعيين الولاية الحيز. |
يمكن تعيين خاصية فقط عندما يكون مؤشر ترابط في الحالة ThreadState.Unstarted؛ فإنه يمكن تعيين مرة واحدة فقط لمؤشر ترابط.
إذا كانت الولاية الحيز هو لم يتم تعيينها من قبل مؤشر ترابط هو بدء تشغيل مؤشر ترابط هو تهيئة ك apartment ذات مؤشرات ترابط متعددة (MTA). مؤشر ترابط أداة الإنهاء و كافة عمليات جزئية التي يتم التحكم فيها بواسطة ThreadPoolMTA.
هام |
---|
لتطبيق رمز بدء التشغيل، فالطريقة الوحيدة للتحكم بالولاية الحيز هو لتطبيق MTAThreadAttributeأو STAThreadAttributeلإدخال يؤشر إجراء.في إصدارات.NET Framework 1.0 و 1.1، ApartmentStateيمكن تعيين خاصية كـ اﻷول سطر من تعليمات برمجية.Th هو هو غير مسموح بها في الإصدار 2.0 من برنامج.NET Framework. |
كشف المدارة كائنات COM إلى تتصرف كما لو أنها تم تجميعه على منظم مترابطة الحرة. في غير ذلك الكلمات، التي يمكن استدعاؤها من أي شقة COM بطريقة مترابطة الحرة. الوحيد مدارة هي كائنات لا يواجه هذه المشكلة مترابطة بتحرير هذه الكائنات التي ينحدر من ServicedComponent.
في العالم التي تمت إدارتها، هناك هو يوجد أي دعم ل SynchronizationAttributeإلا إذا كنت تستخدم سياقات والمرتبطة بالسياق المدارة المثيلات. إذا كنت تستخدم EnterpriseServices، ثم الخاص بك كائن يجب أن ينحدر من ServicedComponent (which هو itself derived fromContextBoundObject).
عند تعليمات برمجية مُدارة على المكالمات الخروج إلى COM الكائنات، دائماً يتبع القواعد COM. بمعنى آخر، يقوم باستدعاء من خلال وكلاء الشقة COM و wrappers سياق COM + 1.0 كما هو محدد بواسطة OLE32.
المشاكل المتعلقة بالمنع
إذا كان مؤشر ترابط يقوم استدعاء غير مدار في النظام تشغيل الذي قام بحظر مؤشر ترابط في تعليمات برمجية غير المدارة، لن يتم تطبيق وقت التشغيل التحكم من أجل Thread.Interruptأو Thread.Abort. في حالة من Thread.Abort، وضع وقت التشغيل مؤشر ترابط ل إحباط و أخذ التحكم منه عند ذلك re-enters تعليمات برمجية مُدارة. هو المفضل للاستخدام في حظر المدارة بدلاً من حظر غير مدار. WaitHandle.WaitOne,WaitHandle.WaitAny, WaitHandle.WaitAll, Monitor.Enter, Monitor.TryEnter, Thread.Join, GC.WaitForPendingFinalizers, and so on are all responsive to Thread.Interrupt and to Thread.Abort. أيضا، إذا كان مؤشر الترابط الخاص بك هو في حيز تخزين مؤشر ترابط مفرد، الجميع هذه المدارة حظر العمليات سيقوم بشكل صحيح مضخة رسائل في الأجزاء الخاصة بك مع مؤشر الترابط الخاص بك هو المحظورة.