كيف يمكن لأحد التعليمات البرمجية اختبار السلوك وتعيينه دون تعليمات خاصة للأجهزة؟
-
01-07-2019 - |
سؤال
تتطلب معظم التطبيقات التي أجدها تعليمات الأجهزة للقيام بذلك.ومع ذلك، أشك بشدة في أن هذا مطلوب (إذا كان الأمر كذلك، فلا أستطيع معرفة السبب...)
المحلول
لا تحتاج إلى اختبار وتعيين تعليمات للحصول على قفل الاستبعاد المتبادل، إذا كان هذا هو ما تطلبه.وصف ديكسترا أول خوارزمية استبعاد متبادل أعرفها، في عام 1965.عنوان الورقة كان "حل مشكلة في التحكم بالبرمجة المتزامنة"، ابحث في جوجل عن نسخة قريبة منك.لم تتطلب الخوارزمية الأصلية دعمًا خاصًا من الأجهزة على الإطلاق، ولكن توفير تعليمات ذرية في وحدة المعالجة المركزية أدى إلى تحسين الأداء بشكل كبير.
يعد الاختبار والضبط، والمبادلة الذرية، والتحميل المرتبط بالتحميل + المتجر المشروط كلها من البدائيات الشائعة التي توفرها وحدات المعالجة المركزية.يمكن استخدام الكل لتنفيذ الاستبعاد المتبادل، والذي يمكن استخدامه بعد ذلك لتنفيذ أي دلالات قفل تريدها.
نصائح أخرى
إذا كنت تريد طريقة متقاطعة للقيام بذلك، وكنت تستخدم gcc، فيمكنك استخدام الإضافات الذرية لـ gcc:
http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html
سيؤدي استدعاء هذه إلى تعليمات جهازية خاصة بالجهاز لبنية البناء الحالية.على تلك التي لا تدعمها، سوف تفشل الترجمة.(أظن...)