دالات مكتبة وقت التشغيل C للتحكم في مؤشر الترابط

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

توفر مكتبات وقت التشغيل LIBCMT وC MSVCRT الدالات التالية لإنشاء مؤشر ترابط و إنهائه: _beginthread _beginthreadex و_endthread _endthreadex

الدالات _beginthread و _beginthreadex تنشئ مؤشر ترابط جديد و تعيد معرف مؤشر ترابط إذا نجحت العملية. ينتهي مؤشر الترابط تلقائياً في حالة إكمال التنفيذ أو يمكنه إنهاء نفسه باستدعاء _endthread أو _endthreadex.

ملاحظة

إذا كنت تنوي استدعاء إجراءات وقت التشغيل C من برنامج مبني بـ Libcmt.lib ، يجب عليك بدء تشغيل مؤشرات الترابط الخاصة بك بالدالة _beginthread أو _beginthreadex . لا تستخدم دوال Win32 ExitThread و CreateThread. استخدام SuspendThread يمكن أن يؤدي إلى حالة توقف تام عند إيقاف أكثر من مؤشر ترابط في انتظار توقف مؤشر الترابط المعلق ليكمل الوصول إلى بنية بيانات وقت تشغيل C.

دوال _beginthread و _beginthreadex

الدالات _beginthread و _beginthreadex تنشئ مؤشر ترابط جديد . مؤشر الترابط يشارك التعليمات البرمجية و البيانات لعملية مع مؤشرات أخرى في العملية ولكن لها قيم سجل، و مساحة مكدس و عنوان للتعليمات الحالية فريدة خاصة بها. يوفر النظام لكل مؤشر ترابط وقتاً من الـ CPU ، بحيث يمكن تنفيذ كافة مؤشرات الترابط في عملية بشكل متزامن.

_beginthread و**_beginthreadex** مشابهة لدالة CreateThread في Win32 API ولكن لديهم هذه الاختلافات:

  • تقومان بتهيئة متغيرات مكتبة وقت تشغيل C معينة. هذا مهم فقط إذا كنت تستخدم مكتبة وقت تشغيل C في مؤشرات الترابط الخاصة بك.

  • CreateThread يساعد على توفير التحكم لسمات الأمان. يمكنك استخدام هذه الدالة لبدء تشغيل مؤشر ترابط في حالة توقف مرحلي.

_beginthread و**_beginthreadex** تقومان بإرجاع مؤشر(handle) إلى مؤشر الترابط الجديد في حالة النجاح أو رمز خطأ إذا كان هناك خطأ.

دوال _endthread و _endthreadex

الدالة _endthread تقوم بإنهاء مؤشر الترابط الذي تم إنشاؤه بواسطة _beginthread (و بالمثل، _endthreadex تقوم بإنهاء مؤشر الترابط الذي تم إنشاؤه بواسطة _beginthreadex). ينهي عمليات جزئية تلقائياً عندما تنتهي. _endthreadو**_endthreadex**مفيدة لإنهاء الشرطي من خلال مسار التنفيذ. مؤشر الترابط المخصص لمعالجة الاتصالات، على سبيل المثال، يمكنه الإنهاء إذا تعذر الحصول على التحكم في منفذ الاتصالات.

راجع أيضًا:

المبادئ

تعدد العمليات بال C و Win32