Załóżmy, że muszę wykonać kilka równoczesnych zadań.Kiedy Futures mogą być bardziej odpowiednie niż Aktorzy (lub odwrotnie) w Scali?
Mogę zawijać każde zadanie w Future
i czekać na ich zakończenie. Alternatywnie mogę utworzyć Actor
dla każdego zadania. Każdy Actor
wykona swoje zadanie (np. Po otrzymaniu komunikatu "start") i wyśle wynik z powrotem.
Ciekawe, gdy należy użyć pierwszej (z Future
s), a drugi (z Actor
S) podejścia i czemu podejście Future
jest uważane za korzystniejsze dla przypadku opisanym powyżej.
Jedyna różnica polega tylko na składni. Czy to jest poprawne? – Michael
Różnica dotyczy również implementacji podstawowej, ale model Aktora jest generalnie silniejszym i bardziej ekspresyjnym modelem programowania - prawdopodobnie można utworzyć interfejs API podobny do interfejsu Futures API przy użyciu aktorów. Wdrażanie aktorów wykorzystujących przyszłość byłoby bardziej uciążliwe. – axel22
Ok, widzę różnicę między modelami. Czy mógłbyś wyjaśnić również różnicę pomiędzy implementacjami? – Michael