Dlaczego Pthread_cond_wait potrzebuje muteksu?
Dlaczego Pthread_cond_wait potrzebuje muteksu?

Wideo: Dlaczego Pthread_cond_wait potrzebuje muteksu?

Wideo: Dlaczego Pthread_cond_wait potrzebuje muteksu?
Wideo: Mutex vs Synchronization 2024, Może
Anonim

ten muteks służy do ochrony samej zmiennej warunku. Dlatego ty potrzebować zamknęło się przed tobą robić czekać. Następnie, gdy zmienna warunku zostanie zasygnalizowana lub rozesłana do, jeden lub więcej wątków na liście oczekujących zostanie obudzony i muteks zostanie ponownie magicznie zablokowany dla tego wątku.

W związku z tym, czy Pthread_cond_wait odblokowuje mutex?

ten pthread_cond_wait () funkcja blokuje wątek wywołujący na zmiennej warunku cond, a odblokowuje Powiązane mutex mutex . Wątek wywołujący musiał być zablokowany muteks przed czekaniem na zmienną warunku. Po powrocie z funkcji muteks jest ponownie zablokowana i należy do wątku wywołującego.

Następnie pojawia się pytanie, dlaczego mutex jest potrzebny? Zapewnia, że tylko jeden wątek wykonuje kluczowy fragment kodu na raz, co z kolei ogranicza dostęp do struktury danych. Zapewnia to, że oba wątki mają pełny i prawidłowy widok tej pamięci niezależnie od zmiany kolejności procesora. ten muteks jest absolutną koniecznością podczas programowania współbieżnego.

Poza powyższym, dlaczego zmienne warunkowe wymagają mutexu?

ten muteks jest używany do ochrony zmienna warunku samo. Dlatego ty potrzebować zamknęło się przed tobą robić czekać. Wtedy kiedy zmienna warunku to zasygnalizowany lub nadany do jednego lub więcej wątków na liście oczekujących Wola być obudzonym i mutex będzie być magicznie zablokowanym ponownie dla tego wątku.

Dlaczego potrzebujemy zmiennych warunkowych?

Zmienne warunkowe pozwól, aby zestaw nici spał, aż łaskocze! Możesz łaskotać jedną nić lub wszystkie śpiące wątki. Jeśli obudzisz tylko jeden wątek, system operacyjny zdecyduje, który wątek się obudzić.

Zalecana: