Subject: Re: [boost] Is there any interest in a library for actor programming? [preliminary submission]
From: Charousset, Dominik (Dominik.Charousset_at_[hidden])
Date: 2014-05-16 02:01:37
> I'm a bit of a lurker on this list but your post got me curious. The actor
> model looks quite appealing. However a bit of self study led me to
> http://www.theron-library.com/. Their code examples look more like
> something I would use. I'd be curious to know how you see the differences.
Theron has a completely different design based on classes alone. You have to maintain your Framework and pass it around all the times. You have to register your message handlers using member function pointers. You can't change your behavior dynamically, which in turn means you cannot build a simple state machine. The Boost.Actor abstraction is more powerful and at the same time easier to use. Theron only has untyped actor handles, meaning that there's a whole class of errors that your compiler could catch at compile time rather than having them fired at runtime. The Theron way of doing things will cause you to write more boilerplate code, since you have to write a class and you have to have a constructor taking the Framework as reference, etc.
Boost.Actor is a C++11 library with an emphasis on a clean library design that requires as little boilerplate code as possible. If you prefer class-based designs, you can just use classes in Boost.Actor as well. You simply derive from event_based_actor and have each actor have its own class. In my opinions, classes are overused and most actors don't need a class. But that's a decision that's up to the user of Boost.Actor.