Sprzedaj swój stary telefon Czy masz może w szafie tak stary telefon, że wydaje się, że musiałbyś komuś zapłacić aby go od Ciebie zabrał? Jeśli tak, to mam dla Ciebie świetne rozwiązanie, zrób z niego pożytek i sprzedaj go w Top Dollar Mobile. Jakiś czas temu natrafiłem w sieci na artykuł, który opisywał wejście TDM na rynek polski. Pomysł...

Czytaj dalej

Podsumowanie roku 2011 Czas na podsumowanie minionego roku. W ostatnich 12 miesiącach na blogu pojawiło się  tylko 18 wpisów - tragedia. W poprzednim roku (2010), niepełnym, bo blog powstał w maju, wpisów było 44.  W 2011 roku witrynę odwiedziło 3307 unikalny użytkowników (spadek prawie o 50%), którzy wygenerowali 4326 odwiedzin (6190 odsłon)....

Czytaj dalej

Prawdziwy Android Gingerbread Idą święta. Czas na pierniki - androidowe :) Składniki: 300 g mąki pszennej, 100 g mąki żytniej pełnoziarnistej, 2 duże jajka, 13 dag cukru pudru, 10 dag masła, roztopionego, 10 dag miodu, 1 łyżka przyprawy do piernika, 1 łyżka kakao, 1 łyżeczka sody oczyszczonej. Wszystkie składniki wsypać do naczynia, wymieszać...

Czytaj dalej

Do czego służy laptop? Wracając z wakacji we wrześniu, czekając na przesiadkę na lotnisku w Brukseli, zostałem uświadomiony do czego w dzisiejszych czasach służy laptop... to po prostu podstawka pod iPad'a :)

Czytaj dalej

Wideo GTalk w Warszawskim Metrze W weekend przeprowadziłem ciekawy eksperyment. Siedząc w pędzącym metrze, trzymając w ręku Galaxy Taba 10.1, łączącego się z siecią poprzez operatora Play (jedyny dostępny "pod ziemią") nawiązałem wideochat z osobą na powierzchni :) Niby nic, ale żebyście widzieli miny osób siedzących obok :) Bezcenne! Wideoczat w wersji...

Czytaj dalej

Agent z wiadomością

Agent Smith

Z implementacją równoległych zadań można sobie poradzić na wiele różnych sposobów. Zazwyczaj jednak instalujemy blokady, monitory, tworzymy transakcje, oplatamy synchroniczny kod. Człowiek myśli synchronicznie, działa synchronicznie i często pisze – jeśli potrafi – synchroniczny kod. Co by się jednak stało, gdyby całe takie podejście odwrócić do góry nogami? Takich przełomowych projektów było wiele, oferowały nowy model pisania równoległych aplikacji, bez pamięci wspólnej i z wymianą komunikatów. Takie rozwiązanie, mimo szeregu ograniczeń, jest bardzo skalowalne. Przejdźmy jednak do rzeczy. W dzisiejszym wpisie chciałbym przedstawić Wam Model Agenta [1] (czasami zwany również – Modelem Aktora).

Cała idea tego podejścia polega na wyodrębnieniu agentów/aktorów, którzy spełniają jakąś logicznie pojedynczą rolę. Agenci nie dzielą między sobą żadnych zasobów, chyba że umiejscowieni są w jednej domenie. Zasoby takiej domeny podlegają wtedy synchronizacji. Komunikacja między agentami odbywa się poprzez wiadomości, które są przekazywane – i tu uwaga – przez kopiowanie. W ten prosty sposób każda domena może działać równoległe względem innej – często bywa tak, że w domenie jest tylko jeden agent.

Aby zastosować Model Agenta, najlepiej jest wyobrazić sobie projektowaną aplikację jako – uwaga – osiedle. Cała aplikacja to jedno, przedmiejskie osiedle z domkami i pocztą – tyle. W każdym domku mieszka przynajmniej jeden agent/agentka – dom to właśnie domena. W domku z każdego sprzętu (zasobu) może korzystać tylko jeden agent – mieszkający w tym domku (sąsiad nie może niczego dotykać). Mamy więc synchronizację wewnątrz domeny. Agenci komunikują się ze sobą albo przez listy, które wkładają do skrzynki przed domkiem, a listonosz, zanosi je do odpowiedniej skrzynki adresata (listonosz jest w tym przypadku kanałem), albo przez karteczki na lodówce (wspólną pamięć), kiedy komunikujemy się z domownikiem (agentem w tym samym domu). Każdy agent jest inżynierem w danej kategorii. W listach dostaje dane do pracy i w listach również odsyła wyniki. Jeśli dwóch agentów w domku potrzebuje wiertarki, to jeden musi poczekać, aż drugi skończy swoją pracę. Dokładnie mówiąc, każdy domek działa w innym wątku, a osiedle utożsamiane jest z jednym procesem. Oczywiście, nic nie stoi na przeszkodzie komunikacji między innymi osiedlami :-)

Wiem że, jest to dość duża abstrakcja, ale na sam początek przygody z agentami powinna wystarczyć. Jest tam też kilka niedociągnięć, ale myślę, że kiedy będę omawiał implementacje, na wszystkie pytania, znajdzie się odpowiedź.

Każda implementacja posiada własne smaczki, które wprowadzają pewne udogodnienia w platformie/języku, na jakie dane rozwiązanie jest kierowane. Choć na rynku istnieje kilka implementacji kierowanych na platformę .NET, to w kolejnych wpisach, chciałbym się skoncentrować jedynie na rozwiązaniu zaproponowanym przez Microsoft – Axum [2]. Zapraszam wkrótce.

Źródła:

Promuj