سؤال

انا استخدم WaitForSingleObject() وظيفة لتنفيذ الانتظار في برنامجي.

WaitForSingleObject(eventToBeSigaled, timeOut);

نعلم جميعًا أن هذه الوظيفة تنتظر الإشارة إلى الحدث لفترة زمنية محددة.

ولكن أريد أن أعرف أن ما يحدث عندما يتم تخصيص الحدث بالفعل قبل الدخول إلى هذه المكالمة، في ذلك الوقت سيتم الانتظار fail(WAIT_FAILED)؟يرجى الإجابة على هذا مع السبب المناسب.أريد أن أعرف هذا أعمق قليلا.

هل كانت مفيدة؟

المحلول

الإجابة على سؤالك الأول:إذا تم الإشارة إلى الحدث بالفعل، الخاص بك Wait() سيعود على الفور WAIT_OBJECT_0.

السؤال الثاني:واحدة من الظروف WAIT_FAILED يتم إرجاعه إذا تم إغلاق مقبض الحدث متى Wait() يسمى.في هذه الحالة، لن يتمكن برنامج جدولة نظام التشغيل من معالجة Wait() اتصل ومن ثم يعود WAIT_FAILED.

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

نصائح أخرى

يجب عليك التحقق من وثائقه أولا، وصلة

Remarks

The WaitForSingleObject function checks the current state of the specified object. If the object's state is nonsignaled, the calling thread enters the wait state until the object is signaled or the time-out interval elapses.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top