لماذا يحتاج Pthread_cond_wait إلى كائن المزامنة (mutex)؟
لماذا يحتاج Pthread_cond_wait إلى كائن المزامنة (mutex)؟

فيديو: لماذا يحتاج Pthread_cond_wait إلى كائن المزامنة (mutex)؟

فيديو: لماذا يحتاج Pthread_cond_wait إلى كائن المزامنة (mutex)؟
فيديو: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, يمكن
Anonim

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

فيما يتعلق بهذا ، هل يقوم Pthread_cond_wait بإلغاء تأمين كائن المزامنة (mutex)؟

ال pthread_cond_wait () تحظر الوظيفة مؤشر ترابط الاستدعاء في متغير الشرط ، و يفتح ويرتبط كائن المزامنة (mutex) . يجب أن يكون موضوع الاستدعاء مغلقًا كائن المزامنة قبل الانتظار على متغير الشرط. عند العودة من الوظيفة ، فإن ملف كائن المزامنة مؤمن ومملوك مرة أخرى بواسطة مؤشر ترابط الاستدعاء.

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

بجانب ما سبق ، لماذا تحتاج متغيرات الشرط إلى كائن المزامنة (mutex)؟

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

لماذا نحتاج متغيرات الشرط؟

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

موصى به: