Are there any good implementations, documents, etc. of Actor-esque concurrency libraries in Common Lisp? CLiki is rather vague on this subject.
And no, I'm not using Clojure and I won't use it for this.
The actor model is characterized by inherent concurrency of computation within and among actors, dynamic creation of actors, inclusion of actor addresses in messages, and interaction only through direct asynchronous message passing with no restriction on message arrival order.
The actor model is a conceptual model to deal with concurrent computation. It defines some general rules for how the system's components should behave and interact with each other. The most famous language that uses this model is probably Erlang .
Properties of the actors Actors are isolated from each other and they do not share memory. They have a state, but the only way to change it is by receiving a message. Every actor has its own mailbox, which is similar to a message queue. Messages are stored in actors' mailboxes until they are processed.
Instead of calling methods, actors send messages to each other. Sending a message does not transfer the thread of execution from the sender to the destination. An actor can send a message and continue without blocking. It can, therefore, do more work, send and receive messages.
zeromq (www.zeromq.org) has bindings for Common Lisp. It doesn't quite support the actor model (named pipes rather than named actors) but it might be what you are looking for.
Cliki suggests cl-actors (http://www.cliki.net/cl-actors) but I have no experience with this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With