Wzór reaktora jest wyjaśniony w Wikipedii i jest nieco zbyt abstrakcyjny. Czy możesz opisać ten wzór w bardziej konkretny sposób? Idealnie z fragmentami kodu lub diagramami klas wysokiego poziomu opisującymi niektóre zastosowania wzorca reaktora.
Wzór reaktora jest wyjaśniony w Wikipedii i jest nieco zbyt abstrakcyjny. Czy możesz opisać ten wzór w bardziej konkretny sposób? Idealnie z fragmentami kodu lub diagramami klas wysokiego poziomu opisującymi niektóre zastosowania wzorca reaktora.
Odpowiedzi:
Możesz sprawdzić oryginalny opis go opisujący http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
Wzorzec projektowy Reactor obsługuje żądania usług, które są dostarczane jednocześnie do aplikacji przez co najmniej jednego klienta. Każda usługa w aplikacji może składać się z metod serwerowych i jest reprezentowana przez oddzielną procedurę obsługi zdarzeń, która jest odpowiedzialna za wysyłanie żądań specyficznych dla usługi. Wysyłanie programów obsługi zdarzeń jest wykonywane przez dyspozytora inicjacji, który zarządza zarejestrowanymi programami obsługi zdarzeń. Demultipleksowanie żądań usług jest wykonywane przez demultiplekser zdarzeń synchronicznych.
Reaktor umożliwia wydajne przetwarzanie wielu zadań, które blokują się (powiedzmy z powodu operacji we / wy) przy użyciu pojedynczego wątku. Reaktor zarządza pulą programów obsługi i uruchamia pętlę zdarzeń. Kiedy jest wezwany do wykonania zadania, łączy je z nowym lub nieobsadzonym programem obsługi, czyniąc je aktywnym. Pętla zdarzeń (1) znajduje wszystkie programy obsługi, które są aktywne i odblokowane (lub deleguje to do implementacji programu rozsyłającego) (2) wykonuje każdy z tych znalezionych programów obsługi sekwencyjnie, dopóki nie ukończą lub nie osiągną punktu, w którym są blokowane. Ukończone moduły obsługi stają się nieaktywne i puste do ponownego użycia, podczas gdy zablokowane aktywne moduły obsługi dają możliwość kontynuowania pętli zdarzeń. (3) Powtarza się od kroku (1)