مثال وشرح لكائن المزامنة
توفر كائنات المزامنة، أو كائنات الاستبعاد المتبادل، آلية للتحكم في الوصول إلى الموارد المشتركة في بيئات متعددة مؤشرات الترابط. يمكن أن يكون فهم عملياتها أمرًا صعبًا، حيث قد يبدو بناء الجملة الخاص بها غير بديهي للوهلة الأولى.
بناء جملة Mutex
يشير بناء جملة pthread_mutex_lock(&mutex1) إلى أن كائن المزامنة (mutex) يتم قفل نفسه. ومع ذلك، ليس كائن المزامنة (mutex) هو الذي يتم قفله، بل منطقة التعليمات البرمجية المحمية به. هذا يمنع سلاسل الرسائل الأخرى من الوصول إلى الكود أثناء تنفيذه بواسطة مؤشر الترابط الحالي.
استخدام Mutex وقفل الإسناد
تحدد الخيوط حالة قفل الكود من خلال المراقبة أسوار الذاكرة التي يتم إنشاؤها عند الحصول على كائن المزامنة (mutex) وإصداره. تضمن أسوار الذاكرة أن التغييرات التي يتم إجراؤها على الذاكرة بواسطة مؤشر ترابط واحد تكون مرئية لمؤشرات الترابط الأخرى في الوقت المناسب.الأقسام الهامة
الأقسام الهامة ليست مثل كائنات المزامنة. وهي متوفرة فقط في نظام التشغيل Windows وتشير إلى مناطق التعليمات البرمجية المحمية بواسطة كائنات المزامنة. الأقسام الهامة نفسها لا توفر التحكم في الوصول المتزامن.
أبسط مثال على كائن المزامنة
يوضح الكود التالي الاستخدام الأساسي لكائن المزامنة:
#include للمساعدة في تصور المفهوم، فكر في كشك الهاتف حيث يحاول العديد من الأشخاص إجراء مكالمات. يمثل مقبض الباب كائن المزامنة (mutex). فقط الشخص الذي يحمل مقبض الباب (كائن المزامنة المقفل) يمكنه الوصول إلى الهاتف (تنفيذ الرمز المحمي). بمجرد تحرير مقبض الباب (فتح كائن المزامنة)، يمكن لشخص آخر الحصول عليه. #include
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3