Epoll Entity, model informacyjny w niszczycielu, który może być postrzegany z przestrzeni użytkownika jako opakowanie dla dwóch zestawów, służy jako podstawa idea API EPOLL. W ramach tego przewodnika omówimy użycie funkcji EPOLL w języku C.
Dostępne są następujące funkcje systemowe do budowy i administrowania obiektem EPOLL:
Wykonane z poziomu i wyzwalane krawędzi
Zachowania wyzwalane krawędzi (ET) i poziomy (LT) są możliwe dla interfejsu cyrkulacji padającego Epoll (LT). Różnice dwóch metod można podsumować w następujący sposób. Załóżmy, że następują następujące:
Żądanie do epoll_wait (2) złożone w kroku 5 prawdopodobnie zatrzyma się, jeśli uchwyt dokumentu RFD zostanie przypisany do protokołu EPOLL z sygnałem Epollet (Edge-Cerggered). W międzyczasie zdalny partner może przewidzieć reakcję w zależności od dostarczonej treści. Wynika to z faktu, że opcja wyzwalana przez krawę.
Dlatego funkcja dzwoniącego może być nawet zawieszona dla określonych informacji, która jest już w pamięci podręcznej bufora w fazie 5. We wspomnianym przykładzie zapis w 2 może spowodować utworzenie działania na RFD, a incydent zostanie odebrany za 3. Wezwanie do epoll_wait (2) w kroku 5 może utknąć, ponieważ aktywność odczytu w kroku 4 nie wykorzystała wszystkich informacji o buforze.
Aby zapobiec przeciągnięciu odczytu lub zapisu przed wyczerpaniem zadania, które zarządza różnymi deskryptorami plików, program korzystający z opcji epollet powinien używać deskryptorów dokumentów nie blokujących. Poniżej znajduje się zalecana procedura stosowania EPOLL jako interfejsu wyzwalanego krawędzi (EPOLLET):
Z drugiej strony epoll jest tylko szybszą wersją ankiety (2) i może być używana wszędzie sonda (2), ponieważ ma identyczną logikę, ilekroć jest postrzegana jako protokół wyzwalający poziom (standard, gdy jest epollet Nie podarowany). Funkcja dzwoniącego ma możliwość dostarczenia sygnału EpolloneShot, aby poinstruować EPOLL, aby zamknął podłączony deskryptor pliku podczas otrzymania wystąpienia z epoll_wait. Tymczasem, nawet z EPOLL wyzwalany przez krawędź, po przyjęciu kilku zestawów informacji (2) można stworzyć wiele działań (2). Dzwoniący naprawdę musi ponownie wdrożyć deskryptor dokumentu za pomocą epoll_ctl (2) i epoll_ctl_mod za każdym razem, gdy podano flagę epolloneShot.
Przykład:
Chociaż logika EPOLL, gdy jest używana jako progowy interfejs API jest identyczny z logiką. Słuchacz w tej ilustracji jest gniazdem niekony, na którym wywoływana jest funkcja słuchania (2). Przed podaniem eagain funkcją odczytu (2) lub zapisu () metoda używa funkcji fd (), aby utrzymać nowy deskryptor pliku gotowego (2). Oparta na zdarzeniowa aplikacja Machine Machine może równie dobrze uratować swój obecny stan po otrzymaniu Eagaina, aby mogła wznowić czytanie lub pisanie w poprzednim punkcie, gdy FD () jest ponownie wywoływany. Sprawdź kod umieszczony tutaj:
Aby poprawić wydajność, deskryptor pliku można dodawać tylko raz w ramach interfejsu EPOLL (EPOLL CTL Add) poprzez wyznaczenie (epollin | epollout) jako interfejs wyzwalający krawędź. Uruchamiając EPOLL CTL (2) z Modem EPOLL CTL, możesz uniknąć ciągłego zmiany wśród epollin i epollinout. Pozostały kod tej ilustracji jest dołączany na następujący obraz:
Wniosek:
Chodzi o użycie funkcji Epoll 7 C w Ubuntu 20.04 system operacyjny Linux do wykonania programowania gniazda. Omówiliśmy, w jaki sposób funkcję epoll () 7 c można użyć do sprawdzenia wykonalności różnych deskryptorów plików w celu ustalenia, czy zawierane przez nich dane wejściowe i wyjściowe są opłacalne, czy nie, zarówno ze strony serwera, jak i klienta.