كيفية استبدال في وقت التشغيل على WaitHandle هذا الموضوع يجب الانتظار على

StackOverflow https://stackoverflow.com/questions/5039679

  •  15-11-2019
  •  | 
  •  

سؤال

أنا أتساءل كيف يمكن تغيير بأمان في وقت التشغيل على EventWaitHandle هذا الموضوع يجب أن تنتظر.

لنفترض على سبيل المثال أن هناك نوعان من المواضيع (أ و ج) أن تتم مزامنة من خلال EventWaitHandles.وهو لا وظيفة لها دوريا و C ينتظر حتى يتلقى الإعلام من أنه يمكن البدء في القيام بعملها (مثلا ، قبل AutoResetEvent).نمط A-C-A-C...

في وقت لاحق في موضوع جديد (ب) إطلاق (مثلا ، قبل إجراء المستخدم) و وظيفتها يجب أن يكون تنفيذها بين البلدين موجود مسبقا المواضيع في هذا الطريق:وهو ما يجعل مهمته ، ثم إشارات ب و مرة ب ينهيها إشارات C.الآن نمط A-B-C-A-B-C...

حتى قبل أن الترابط كان ينتظر على EventWaitHandle مشترك مع وبعد ذلك يجب أن تكون هناك آلية آمنة أن يجعل ج انتظار آخر EventWaitHandle مشتركة مع ب.يبدو لي أن الجزء صعبة هو استبدال EventWaitHandle المستخدمة من قبل ج ، منذ حالما يتم ذلك يجب أن تكون قادرة بسهولة على الإطلاق ب أن استخدام EventWaitHandle الانتظار على وظيفة EventWaitHandle إشارة ج الوظيفي.وينبغي أيضا أن توفر الآلية طريقة بأمان فصل الخيط ب و العودة إلى الوضع الأولي حيث لا يوجد سوى خيط A و C تعمل.

هل هناك طريقة آمنة لإنجاز هذا مع EventWaitHandle ?إذا لم يكن كذلك ، أي اقتراح آخر سيكون موضع تقدير.

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

المحلول

إذا المهمة يعرف عن التغيير ، ثم يكون مهمة ج الخاصة لهذا الحدث.المهمة إشارات مهمة ج الحدث إذا ج أن يكون القادم أو المهمة ب الحدث إذا المهمة ب أن يكون القادم.

بدلا من ذلك استخدام نفس الآلية تغيير أي بيانات مشتركة:الحصول على مزامنة جميع يصل إلى مقبض.على سبيل المثالمهمة ج يكتسب قفل يقرأ التعامل معها ، النشرات القفل ، ينتظر على التعامل معها.لتغييره لديك UI الحصول على القفل تغيير مقبض تحرير القفل.

نصائح أخرى

هل فكرت في تنفيذ نوعا من جدولة حيث المواضيع يمكن التسجيل (تسجيل) مع مقبض لبدء إشارة إلى الإنجاز.و جدولة ثم يأخذ الرعاية من بدء الموضوع التالي من خلال الإعداد المناسب لبدء الحدث وتواصل مع الموضوع التالي, عندما سابقتها وقد وضعت انتهاء الحدث.

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