An Actor Model implementation in Julia
Julia
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
test
.codecov.yml
.gitignore
.travis.yml
LICENSE.md
README.md
REQUIRE
appveyor.yml

README.md

Actors

Build Status Build status codecov

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")