چرا Pthread_cond_wait به mutex نیاز دارد؟
چرا Pthread_cond_wait به mutex نیاز دارد؟

تصویری: چرا Pthread_cond_wait به mutex نیاز دارد؟

تصویری: چرا Pthread_cond_wait به mutex نیاز دارد؟
تصویری: mutex در C چیست؟ (pthread_mutex) 2024, نوامبر
Anonim

این mutex برای محافظت از خود متغیر شرط استفاده می شود. به همین دلیل شما نیاز جلوی تو قفل شد انجام دادن در انتظار. سپس هنگامی که متغیر شرط سیگنال داده می شود یا به آن پخش می شود، یک یا چند رشته در لیست انتظار بیدار می شوند و mutex دوباره به صورت جادویی برای آن موضوع قفل خواهد شد.

با توجه به این موضوع، آیا Pthread_cond_wait mutex را باز می کند؟

این pthread_cond_wait () تابع رشته فراخوانی را در شرایط متغیر شرط مسدود می کند و قفل را باز می کند مرتبط mutex mutex . موضوع فراخوان باید قفل شده باشد mutex قبل از انتظار بر روی متغیر شرط. در بازگشت از تابع، mutex دوباره قفل شده و متعلق به رشته فراخوان است.

پس از آن، سوال این است که چرا mutex مورد نیاز است؟ این تضمین می کند که تنها یک رشته در یک زمان یک قطعه کلیدی از کد را اجرا می کند، که به نوبه خود دسترسی به یک ساختار داده را محدود می کند. این تضمین می کند که هر دو رشته بدون در نظر گرفتن هر گونه ترتیب مجدد CPU، دید کامل و مناسبی از آن حافظه داشته باشند. این mutex هنگام انجام برنامه نویسی همزمان یک ضرورت مطلق است.

علاوه بر موارد فوق، چرا متغیرهای شرط به mutex نیاز دارند؟

این mutex است برای محافظت از متغیر شرط خود به همین دلیل شما نیاز جلوی تو قفل شد انجام دادن در انتظار. سپس زمانی که متغیر شرط است به یک یا چند رشته در لیست انتظار سیگنال داده شده یا پخش می شود اراده بیدار شود و اراده mutex دوباره به صورت جادویی برای آن موضوع قفل شود.

چرا به متغیرهای شرط نیاز داریم؟

متغیرهای شرط اجازه دهید مجموعه ای از نخ ها بخوابند تا زمانی که قلقلک داده شوند! می توانید یک نخ یا تمام نخ هایی را که در حال خواب هستند غلغلک دهید. اگر فقط یک رشته را بیدار کنید، سیستم عامل تصمیم می گیرد که کدام رشته را بیدار کند.

توصیه شده: