Clojure - agenci
Jak wielokrotnie podkreślano, Clojure jest językiem programowania, w którym wiele typów danych jest niezmiennych, co oznacza, że jedynym sposobem na zmianę wartości zmiennej jest utworzenie nowej zmiennej i przypisanie jej nowej wartości. Jednak Clojure zapewnia pewne elementy, które mogą tworzyć zmienny stan. Widzieliśmy, że można to osiągnąć za pomocą typu danych atom. Innym sposobem, w jaki można to osiągnąć, są agenci.
Agentszapewnić niezależną, asynchroniczną zmianę poszczególnych lokalizacji. Agenci są przywiązani do jednego miejsca przechowywania przez cały czas ich życia i pozwalają tylko na mutację tej lokalizacji (do nowego stanu) w wyniku działania. Akcje to funkcje (opcjonalnie z dodatkowymi argumentami), które są asynchronicznie stosowane do stanu agenta i których wartość zwracana staje się nowym stanem agenta.
Następujące operacje są możliwe w Clojure w odniesieniu do agentów.
Sr.No. | Operacje i opis |
---|---|
1 | agent Agent jest tworzony za pomocą komendy agenta. |
2 | wysłać Ta funkcja służy do wysyłania wartości do agenta. |
3 | agenci zamykania Ta funkcja służy do zamykania wszystkich działających agentów. |
4 | odesłać Istnieją przypadki, w których agent ma przypisaną funkcję, która ma charakter blokujący. |
5 | czekaj na Ponieważ aktualizacja wartości agenta jest opóźniona, Clojure udostępnił funkcję „czekaj na”, która służy do określania czasu w milisekundach oczekiwania na aktualizację agenta. |
6 | czekać na Blokuje bieżący wątek (na czas nieokreślony!) Do momentu wykonania wszystkich akcji wysłanych do tej pory z tego wątku lub agenta do agentów. Blokuje na nieudanych agentach. |
7 | błąd agenta Zwraca wyjątek zgłoszony podczas asynchronicznej akcji agenta, jeśli agent zawiedzie. Zwraca nil, jeśli agent nie zawiedzie. |