A Julia implementation of the Actor Model, based on Julia Tasks. Currently, only very basic functionality is implemented. This is likely to end up as something of a hybrid between Erlang- and Scala/Akka-style actors.
The following features are currently missing (but planned):
-
Actor supervision
-
Actor communication beyond current process (on Julia clusters)
-
Truly parallel actors on shared memory (once Julia multi-threading lands)
Usage example:
using Actors
echo_actor = @actor begin
info("Myself: $(self())")
while true
const sender, msg = receive()
info("Received from $sender: $msg")
tell(sender, msg)
end
end
silent_actor = @actor begin
info("Myself: $(self())")
while true
const sender, msg = receive()
tell(sender, msg)
end
end
tell(echo_actor, "Hello!")
info("Reply: $(receive())")
reply = ask(echo_actor, "bar")
info("Query reply: $reply")