Co to jest MUTEX?
Obiekt wzajemnego wykluczania (MUTEX) to obiekt stworzony do użytku w programach komputerowych. Podstawową funkcją MUTEX jest umożliwienie wielu wątkom programu korzystania z jednego zasobu. Ogólnie rzecz biorąc, funkcjonalność obiektów wzajemnego wykluczenia polega na umożliwieniu korzystania z jednego zasobu poprzez stworzenie środowiska, w którym dostęp do zasobu jest stale przekazywany tam iz powrotem między różnymi aspektami programu.
Proces aktywacji i tworzenia MUTEX-u odbywa się po otwarciu aplikacji programu komputerowego. Zasadniczo program utworzy MUTEX i odniesie go do określonego zasobu, który jest potrzebny do wydajnego działania otwartego programu. W miarę przywoływania zasobów system operacyjny przypisuje MUTEX unikalną nazwę i używa go do identyfikacji procesu tak długo, jak długo program pozostaje otwarty.
Gdy MUTEX zostanie aktywowany i nazwany dla sesji, każdy inny wątek programu, który wymaga tego zasobu, może uzyskać dostęp, nawet jeśli zasób jest już w użyciu przez inny wątek. Wskazując potrzebę zasobu, funkcja MUTEX zacznie naprzemiennie uzyskiwać dostęp do zasobu tam iz powrotem między wątkami. Dla użytkownika końcowego proces ten jest przejrzysty. Ze wszystkich praktycznych intencji i celów wydaje się, że dwóch użytkowników lub dwa wątki tworzą jednocześnie ten sam zasób.
Chociaż szybkość transferu dostępu jest tak szybka, że nie jest nawet zauważalna dla użytkownika końcowego, należy zauważyć, że za każdym razem, gdy używany jest zasób, jest on skutecznie blokowany na jednym wątku w sekwencji. Kolejny wątek wymagający użycia zasobu wygeneruje żądanie, które przejdzie do kolejki i pozostanie tam, dopóki pierwszy wątek nie zakończy aktywnego użycia. W tym momencie zasób jest odblokowany, a funkcja MUTEX pozwala na dostęp do następnego wątku w kolejce. Jeśli trzeci wątek jest aktywny i potrzebuje zasobu, MUTEX również umieści ten wątek w kolejce i zapewni dostęp na zasadzie rotacji.