Mutex i Semafor
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.