سؤال

رصد المفترض أن حل المشاكل مع الإشارات في بيئات متزامنة.
أنا أبحث عن القياس باستخدام جهاز الآيات إشارة.

يرجى استخدام معلومات القياس:
4 المهام (TaskA, TaskB, TaskC, TaskD)
1 متغير varX

كل مهمة يريد التلاعب varX استنادا إلى بعض الأحداث.

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

المحلول

يتيح القول مجموعة من المرضى يريد الذهاب لرؤية الطبيب.

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

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

هم في الأساس نفس الشيء الشاشات فقط أكثر تنظيما من الإشارات.

نصائح أخرى

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

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

المصدر:www.mijnadres.net/published/Monitor%20Object%20Pattern.pdf

من المهم أن فصل التنازع على الموارد من إعلام الحدث.شاشة إشارة تستخدم للحد من الوصول إلى مورد مشترك.الشاشة هو الأساس سيمافور الذي عد من 1.إذا كان كل من المهام الخاصة بك يريد الحصول على واحدة varX ، ثم تحتاج إلى حمايتها باستخدام جهاز العرض (أو sempahore 1):

Monitor.Enter 
// do something with varX
Monitor.Exit

أو

Semaphore.Acquire
// do something with varX
Semaphore.Release

مع إشارة يمكنك الواضح تعيين عدد من سمح concurrenct المشاركين إلى الموارد المشتركة.

نيك.

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