Mutex vs Semaphore
Mutex są używane do zapewnienia szeregowego dostępu do części kodu uczestnika, którego nie można wykonać równolegle za pomocą więcej niż jednego wątku. Muteks zapewnia, że tylko jeden kod może uzyskać dostęp do kontrolowanej sekcji na raz. Aby uzyskać dostęp, inne kody muszą czekać, aż pierwszy kod wyjdzie. Możesz uznać to za klucz do pokoju. Osoba mająca dostęp do tego klucza jest pierwsza. Do czasu powrotu tej osoby nikt inny nie może uzyskać dostępu do tego pokoju.
Semafor zapewnia dostęp do udostępnionego zasobu wielu użytkownikom jednocześnie. W miarę wzrostu liczby użytkowników uzyskujących dostęp do zasobu liczba semaforów zmniejsza się. 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ć traktowany jako wiązka podobnych kluczy do podobnych zamków w jednym pomieszczeniu, ale liczba tych kluczy jest ograniczona. Osoby posiadające 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 przypadkach
powiadomienia i wzajemne wyłączenia.
2. Mutex zapewnia szeregowy dostęp do wspólnych zasobów, podczas gdy semafor ogranicza
liczba jednoczesnych dostępów.
3. Muteks działa z jednym wątkiem na raz, podczas gdy semafor zarządza wieloma wątkami
razem.
4. Mutex ma koncepcję właściciela, w której proces blokujący muteks może tylko
otwórz to 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
w odniesieniu do synchronizacji dostępu do zasobu.
Streszczenie:
1. Semantycznie i teoretycznie zarówno muteks, jak i semafor są takie same. Można być
zaimplementowane przy użyciu drugiego, ale praktycznie oba są różne.
2. Muteks to nic innego jak semafor o wartości liczby równej jeden.
3. Muteks to semafor z dodatkowymi funkcjami, takimi jak własność i inwersja pierwszeństwa
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 programowania.
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.