الاختلافات بين المتغيرات الشرطية وكائنات المزامنة والأقفال

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

سؤال

على سبيل المثال واجهات c++0x

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

شكرا لك مقدما.

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

المحلول

في الصفحة التي تشير إلى "مزامنة" هو على مستوى منخفض الفعلي مزامنة بدائية. يمكنك أن تأخذ مزامنة ثم الإفراج عنها، ومؤشر واحد فقط يمكن أن تتخذ في أي وقت واحد (وبالتالي فهو تزامن بدائية). A مزامنة العودية واحد هو الذي يمكن أن تتخذها <م> نفس موضوع عدة مرات، ومن ثم لا بد من إطلاق سراح عدة مرات من قبل نفس الموضوع قبل أن آخرين يمكن أن أعتبر.

وA "تأمين" هنا هو مجرد C ++ فئة المجمع أن يأخذ مزامنة في منشئ والنشرات في المدمر. ومن المفيد لإقامة مزامنة للنطاقات C ++.

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

نصائح أخرى

لست على دراية بـ C++0x لذا خذ هذه الإجابة مع قليل من الملح.

يكرر:موتيكس مقابل.الأقفال:من الوثائق التي نشرتها، يبدو أن mutex هو كائن يمثل نظام التشغيل Mutex، في حين أن a lock هو كائن يحمل كائن المزامنة (mutex) لتسهيل عملية نمط راي.

تعد متغيرات الحالة آلية مفيدة لربط آلية الحظر/الإشارة (إشارة + انتظار) بآلية الاستبعاد المتبادل، مع الاحتفاظ بها منفصلة في نظام التشغيل بحيث يمكنك كمبرمج نظام اختيار الارتباط بين condvar وmutex.(مفيد للتعامل مع مجموعات متعددة من الكائنات التي يتم الوصول إليها بشكل متزامن) لدى Rob Krten بعضًا منها تفسيرات جيدة على condvars في أحد فصوله على الإنترنت كتاب عن QNX.

وأما المراجع العامة: هذا الكتاب (لم يخرج بعد) يبدو مثيرا للاهتمام.

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