Różnica między mutexem a semaforem

Różnica między mutexem a semaforem

Mutex vs semafor

Mutex są używane do zapewnienia serializacji dostępu do części kodu ponownego wcielenia, którego nie można wykonać równolegle przez więcej niż jeden wątek. Mutex zapewnia, że ​​tylko jeden kod może uzyskać dostęp do kontrolowanej sekcji na raz. Aby uzyskać dostęp, inne kody mają czekać, aż pierwszy kod wyjdzie. Możesz uznać to za klucz do pokoju. Osoba posiadająca dostęp do tego klucza najpierw idzie najpierw. Do czasu, gdy osoba wróci, nikt inny nie może uzyskać dostępu do tego pokoju.

Semafor zapewnia dostęp do wspólnego zasobu wielu użytkownikom jednocześnie. Wraz ze wzrostem liczby użytkowników uzyskujących dostęp do zasobów, liczba semaforów zmniejsza się. Gdy użytkownicy zaczną wydawać zasób, liczba Semaphore zaczyna się znów rosnąć. Jest używany przez aplikacje wymagające synchronizacji. Liczba współbieżnych użytkowników jest ograniczona na podstawie limitu semaforu. Semafor można traktować jako wiązkę podobnych kluczy do podobnych zamków do pokoju jednoosobowego, ale te klucze są ograniczone. Ludzie, którzy mają te klucze, mogą dzielić pokój.

Różnice między mutexem i semaforem:

1. Mutex jest stosowany do wzajemnego wykluczenia, podczas gdy semafor znajduje swoją użyteczność w obu przypadkach

Powiadomienie i wzajemne wykluczenia.

2. Mutex zapewnia szeregowy dostęp do wspólnych zasobów, podczas gdy semafor ogranicza

liczba współbieżnych dostępu.

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

razem.

4. Mutex ma koncepcję właściciela, w którym proces blokujący Mutex może tylko

ponownie go otwórz. Żaden z pozostałych procesów nie może tego zrobić. Ale w przypadku semaforu takie

ograniczenia nie istnieją.

5. Mutex to mechanizm blokujący, podczas gdy semafor jest mechanizmem sygnalizacyjnym z

szacunek dla synchronizacji dostępu do zasobu.

Streszczenie:

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

wdrożone przy użyciu drugiego, ale praktycznie oba są różne.

2. Mutex jest niczym innym jak semaforem o wartości liczby równej jednemu.

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

ochrona.

4. Semafor to abstrakcyjny typ danych, który kontroluje dostęp do wspólnego zasobu przez

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

5. Semafor znajduje swoje zastosowanie w wielu systemach operacyjnych jako prymityw Synchronizacja.

6. Zarówno mutex, jak i semafor są zasobami jądra, które są wykorzystywane do celów

synchronizacja.