All Projects → JuliaActors → Actors.jl

JuliaActors / Actors.jl

Licence: MIT license
Concurrent computing in Julia based on the Actor Model

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Actors.jl

transit
Massively real-time city transit streaming application
Stars: ✭ 20 (-78.95%)
Mutual labels:  actors, actor-model, concurrency, concurrent-programming
Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (+81.05%)
Mutual labels:  actors, actor-model, concurrency, concurrent-programming
traffic
Massively real-time traffic streaming application
Stars: ✭ 25 (-73.68%)
Mutual labels:  actor-model, concurrency, concurrent-programming
So 5 5
SObjectizer: it's all about in-process message dispatching!
Stars: ✭ 87 (-8.42%)
Mutual labels:  actors, actor-model, concurrency
Chymyst Core
Declarative concurrency in Scala - The implementation of the chemical machine
Stars: ✭ 142 (+49.47%)
Mutual labels:  actor-model, concurrency, concurrent-programming
Thespian
Python Actor concurrency library
Stars: ✭ 220 (+131.58%)
Mutual labels:  actors, actor-model, concurrency
theater
Actor framework for Dart. This package makes it easier to work with isolates, create clusters of isolates.
Stars: ✭ 29 (-69.47%)
Mutual labels:  actors, actor-model, concurrency
Actor Framework
An Open Source Implementation of the Actor Model in C++
Stars: ✭ 2,637 (+2675.79%)
Mutual labels:  actors, actor-model
Pulsar
Fibers, Channels and Actors for Clojure
Stars: ✭ 885 (+831.58%)
Mutual labels:  actors, concurrency
Gosiris
An actor framework for Go
Stars: ✭ 222 (+133.68%)
Mutual labels:  actors, actor-model
Actix Remote
Distributed actors for actix framework.
Stars: ✭ 80 (-15.79%)
Mutual labels:  actors, actor-model
Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (+143.16%)
Mutual labels:  actors, actor-model
actors
Actor Model library for Dart.
Stars: ✭ 40 (-57.89%)
Mutual labels:  actor-model, concurrency
Mruby Actor
A actor library for distributed mruby
Stars: ✭ 11 (-88.42%)
Mutual labels:  actors, actor-model
Actor4j Core
Actor4j is an actor-oriented Java framework. Useful for building lightweighted microservices (these are the actors themselves or groups of them). Enhanced performance of message passing.
Stars: ✭ 48 (-49.47%)
Mutual labels:  actors, actor-model
go-left-right
A faster RWLock primitive in Go, 2-3 times faster than RWMutex. A Go implementation of concurrency control algorithm in paper <Left-Right - A Concurrency Control Technique with Wait-Free Population Oblivious Reads>
Stars: ✭ 42 (-55.79%)
Mutual labels:  concurrency, concurrent-programming
Akka Bootcamp
Self-paced training course to learn Akka.NET fundamentals from scratch
Stars: ✭ 880 (+826.32%)
Mutual labels:  actors, actor-model
wasmcloud-otp
wasmCloud host runtime that leverages Elixir/OTP and Rust to provide simple, secure, distributed application development using the actor model
Stars: ✭ 197 (+107.37%)
Mutual labels:  actors, actor-model
Orbit
Orbit - Virtual actor framework for building distributed systems
Stars: ✭ 1,585 (+1568.42%)
Mutual labels:  actors, actor-model
Vlingo Examples
The VLINGO/PLATFORM examples demonstrating features and functionality available in the reactive components.
Stars: ✭ 121 (+27.37%)
Mutual labels:  actors, actor-model

Actors.jl

Concurrent computing in Julia with actors.

stable docs dev docs CI Coverage

Actors implements the Actor Model of computation:

An actor ... in response to a message it receives, can concurrently:

  • send a finite number of messages to other actors;
  • create a finite number of new actors;
  • designate the behavior to be used for the next message it receives.

Actors make(s) concurrency easy to understand and reason about and integrate(s) well with Julia's multi-threading and distributed computing. It provides an API for writing reactive applications, that are:

  • responsive: react to inputs and events,
  • message-driven: rely on asynchronous message-passing,
  • resilient: can cope with failures,
  • elastic: can distribute load over multiple threads and workers.

Greeting Actors

The following example defines two behavior functions: greet and hello and spawns two actors with them. sayhello will forward a message to greeter, get a greeting string back and deliver it as a result:

julia> using Actors

julia> import Actors: spawn

julia> greet(greeting, msg) = greeting*", "*msg*"!" # a greetings server
greet (generic function with 1 method)

julia> hello(greeter, to) = request(greeter, to)    # a greetings client
hello (generic function with 1 method)

julia> greeter = spawn(greet, "Hello")              # start the server with a greet string
Link{Channel{Any}}(Channel{Any}(sz_max:32,sz_curr:0), 1, :default)

julia> sayhello = spawn(hello, greeter)             # start the client with a link to the server
Link{Channel{Any}}(Channel{Any}(sz_max:32,sz_curr:0), 1, :default)

julia> request(sayhello, "World")                   # request the client
"Hello, World!"

julia> request(sayhello, "Kermit")
"Hello, Kermit!"

Please look into the manual for more information and more serious examples.

Development

Actors is part of the Julia GitHub group JuliaActors. Please join!

Authors

  • Oliver Schulz (until v0.1, Oct 2017)
  • Paul Bayer (rewrite since v0.1.1, Nov 2020)

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].