Mutex i Semafor

Anonim

Mutex vs Semaphore

Mutex są używane do zapewnienia serializowanego dostępu do części kodu ponownego wprowadzenia, które nie mogą być wykonywane równolegle przez więcej niż jeden wątek. Mutex zapewnia, że ​​tylko jeden kod może uzyskać dostęp do kontrolowanej sekcji naraz. Aby uzyskać dostęp, inne kody muszą czekać, aż pierwszy kod zostanie zamknięty. Możesz uważać to za klucz do pokoju. Osoba mająca dostęp do tego klucza najpierw jest pierwsza. Do czasu powrotu tej osoby nikt inny nie może uzyskać dostępu do tego pokoju.

Semafor zapewnia jednocześnie dostęp do zasobu udostępnionego wielu użytkownikom. Wraz ze wzrostem liczby użytkowników uzyskujących dostęp do zasobu zmniejsza się liczba semaforów. Gdy użytkownicy zaczną zwalniać zasób, liczba semaforów zacznie ponownie rosnąć. Jest używany przez aplikacje wymagające synchronizacji. Liczba jednoczesnych użytkowników jest ograniczona na podstawie limitu semaforów. Semafor może być uważany za grupę podobnych kluczy do podobnych zamków do pojedynczego pokoju, ale liczba tych klawiszy jest ograniczona. Ludzie, którzy mają te klucze, mogą dzielić pokój.

Różnice między muteksem a semaforem:

1. Mutex służy do wzajemnego wykluczania, podczas gdy semafor znajduje zastosowanie w obu zdarzeniach

powiadomienia i wzajemne wykluczenia.

2. Mutex zapewnia seryjny dostęp do wspólnych zasobów, podczas gdy semafor określa limit

liczba jednoczesnych wejść.

3. Mutex działa z jednym wątkiem na raz, podczas gdy semafor zarządza wieloma wątkami

razem.

4. Mutex ma pojęcie właściciela, w którym proces, który blokuje muteks może tylko

otwórz go ponownie. Żaden inny proces nie może tego zrobić. Ale w przypadku semafora, takie

ograniczenia nie istnieją.

5. Muteks jest mechanizmem blokującym, podczas gdy semafor jest mechanizmem sygnalizacyjnym z

odniesieniu do synchronizacji dostępu do zasobu.

Streszczenie:

1. Semantycznie i teoretycznie zarówno muteks, jak i semafor są takie same. Można być

realizowane za pomocą drugiego, ale praktycznie oba są różne.

2. Muteks jest niczym innym, jak semaforem o wartości równej jeden.

3. Mutex to semafor z dodatkowymi funkcjami, takimi jak własność i priorytet inwersji

ochrona.

4. Semafor jest abstrakcyjnym typem danych, który kontroluje dostęp do wspólnego zasobu przez

wiele procesów w równoległym środowisku programistycznym.

5. Semafor znajduje zastosowanie w wielu systemach operacyjnych jako prymityw synchronizacji.

6. Zarówno mutex, jak i semafor są zasobami jądra używanymi do celów

synchronizacja.