سؤال

حضرت مقابلة اليوم سألني فيها القائم بإجراء المقابلة السؤال التالي:

هل إعادة إدخال وتأمين موضوع الاستبعاد المتبادل؟ هل يمكنك أن تشرح لماذا ؟

أنا جديد نسبيًا في البرمجة المتزامنة ولم أستطع الإجابة عليها .. لكنني قلت ...

الاستبعاد المتبادل هو موضوع آمن. لكن إعادة الدخول ليست وهذا هو السبب وراء إعادة إدخال الأقفال.

انتقل القائم بإجراء المقابلة إلى السؤال التالي على الرغم من منطقة مختلفة ... أعتقد أنني أفسدت هذا الأمر ...

ماذا يتوقع مني أن أقول عندما سألني هذا؟

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

المحلول

يجب أن تكون الإجابة الصحيحة:

نعم هم تنفيذ سلامة الموضوع.

إعادة الدخول

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

مثال واحد

استبعاد متبادل

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

مثال واحد

نصائح أخرى

كلاهما آمن الخيط - يمكنك قراءته أيضًا على ويكيبيديا:
http://en.wikipedia.org/wiki/Reentrant_(subroutine)
http://en.wikipedia.org/wiki/mutual_exclusion

تعتبر Mutexes التي تعيد إدخالها عبارة عن مواد مركبة يمكن قفلها عدة مرات من نفس الخيط إذا تم ضمان وجود فتح مقابل لكل قفل.

انا اقتبس http://en.wikipedia.org/wiki/Reentrant_(subroutine)

يرتبط كلا مفهوم إعادة الدخول وسلامة الخيوط بالطريقة التي تتعامل بها وظائف الموارد. ومع ذلك ، فهي ليست هي نفسها.

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

-في معظم الحالات ، لجعل دالة غير مرجعية ، يجب تعديل الواجهة الخارجية بحيث يتم توفير جميع البيانات بواسطة المتصل بالوظيفة.

-لإنشاء مؤشر ترابط مؤشر ترابط مؤشر ترابط غير آمن ، يجب تغيير التنفيذ فقط ، عادةً عن طريق إضافة كتل المزامنة لحماية الموارد المشتركة من الوصول المتزامن بواسطة مؤشرات ترابط مختلفة.

لذلك ، فإن إعادة الدخول هي خاصية أكثر جوهرية من سلامة مؤشرات الترابط وبحلول التعريف ، تؤدي إلى سلامة مؤشرات الترابط: كل وظيفة إعادة إدخال آمنة ؛ ومع ذلك ، ليست كل وظيفة آمنة مؤشر ترابط إعادة إدخال.

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