Kolejkowanie na niższym poziomie

Omawiając temat kolejkowania warto wspomnieć o twórcy teorii kolejkowania (ang. Queueing theory). Agner Krarup Erlang, bo o nim mowa, opracował model oraz opisał teorię kolejkowania. Wskazał różne sposoby obsługi kolejki oraz konsekwencje zastosowania określonych rozwiązań. Jest także inicjatorem języka Erlang, za pomocą, którego można w prosty sposób zobrazować dodawanie i pobieranie spraw z kolejki.

Wrócmy do przykładu z poprzedniego wpisu i skupmy się na elemencie przejścia od zgłoszenia (niezależnie od kanału) do określonej pozycji na liście spraw. Na poniższym diagramie został zaprezentowany fragment takiego procesu. Zgłoszenie jest zapisywane jako całość a na kolejce umieszczone są wybrane dane niezbędne do zarządzania nią.

form_do_listy_1_450px

Czynność Do sprawę do kolejki, przy wykorzystaniu języka Erlang, opiera się na logice (na podstawie strony http://erlang.org/doc/man/queue.html):

in(Item, Q1 :: queue(Item)) -> Q2 :: queue(Item),

gdy chcemy dodać sprawę na końcu listy. Natomiast:

in_r(Item, Q1 :: queue(Item)) -> Q2 :: queue(Item),

gdy dodajemy sprawę na początku listy. Potem obsługując kolejkę pobieramy zadania z początku lub końca – odpowiednio:

out(Q1 :: queue(Item)) -> {{value, Item}, Q2 :: queue(Item)} | {empty, Q1 :: queue(Item)} 
lub
out_r(Q1 :: queue(Item)) ->{{value, Item}, Q2 :: queue(Item)} | {empty, Q1 :: queue(Item)}

Obsługując kolejkę metodą FIFO lub LIFO musimy wykorzystać pary metod:
dla FIFO – funkcja in do umieszczania oraz funkcja out do pobierania,
dla LIFO – funkcja in oraz funkcja out_r,

Metody LIFO i FIFO opisywałem w poprzednim wpisie.

Reklama

Jedna uwaga do wpisu “Kolejkowanie na niższym poziomie

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s