5

(Question and description rephrased so as to be S.O. compatible)

It is strange that C++ has no widely-adopted, peer-reviewed actor model library yet (on the order of BOOST and STD). I see Theron, but it looks like a man and his code: no matter how good it is, it is not something I would want production code to rely on.

Thus, how do I do Actor Model programming in C++ without having to use unproven libraries? Which BOOST classes should I use?

Note: I am asking this in the face of one or two previous questions on S.O. that show up when one searches for "actor C++" because they had little or no traction. For SEE SHARP, there is this thread But for C++, even the one question that got medium traction this guy, a question from FIVE YEARS AGO was answered with a pointer to a dead link!

Community
  • 1
  • 1
Mark Gerolimatos
  • 2,424
  • 1
  • 23
  • 33

4 Answers4

6

libcppa can be a good choice. Looks better than Theron (which seems to be dead -- the author didn't respond to my email about a bug I've found). Also, there's a "fork" of libcppa named Boost.Actor from the same author here. So hopefully in a couple of years we'll have a proper well-tested peer-reviewed actor implementation in Boost :)

Dmitry Sobinov
  • 131
  • 1
  • 3
3

The lack of an answer by now seems to imply that there is as of 2014 no strongly peer-reviewed Actor system in platform-independent C++.

If you're using Microsoft VS, you can use the Microsoft Asynchronous Agents library

There is also the Intel TBB FlowGraph library, but global availability seems questionable, so it is unclear as to how well it would work on Android/Exynos/Snapdragon/etc or iOS/armv systems. See this question.

Community
  • 1
  • 1
Mark Gerolimatos
  • 2,424
  • 1
  • 23
  • 33
3

libcppa is not peer reviewed (yet), but it's being developed by the iNET working group at the Hamburg University of Applied Sciences. There are publications surrounding its development, it includes a Benchmark Suite, and it is currently in the preliminary submission process for Boost under the name Boost.Actor. If you want to have a peer reviewed actor system in the future, please go ahead and join the discussion on the Boost Mailing List or give Boost.Actor a (short) review in the brand new Boost Library Incubator.

neverlord
  • 890
  • 6
  • 12
2

I agree that code should be peer reviewed, and that there is a need for such a library for C++. I have based my code on Theron, which I find quite complete and very efficient, and with a proper C++ API (much better than libcppa). Ashton has also always responded quickly to all of my requests. Let us hope that it will be released for other committers soon!

The downside with Theron is that its mechanism for distributed communication is broken since it was based on XS a dead variant of ZeroMQ. I am in the process of redesigning the communication mechanism and intend to release this back to Theron by May 2015 with a complete support for ZeroMQ. Thus, Theron is at least properly peer reviewed by me...

I would not recommend building your own Actor mechanism - it will then just be "another man with his code" as you stated. It would be better if we could have a proper release of Theron that we could all work on.

Geir
  • 163
  • 3