Active objects (actors) meet Qt5
-
The lightweight, open source QP/C++ active object framework has been recently "integrated with Qt":http://www.state-machine.com/qt. QP/C++ complements Qt by providing the high-level, concurrent active object infrastructure, while Qt renders the GUI and provides various services.
Active objects (a.k.a. actors) are event-driven, strictly encapsulated software objects running within their own threads of control. They handle events in their internal hierarchical state machines and communicate with one another asynchronously by exchanging events.
The active object computing model underlying QP raises the level of abstraction of Qt and provides a more productive architecture, which is safer to use, more efficient, and easier to understand than the low-level programming with the QThread and QWaitCondition classes of Qt, which are just thin wrappers around P-thread (POSIX threads API).
The active object (actor) model is all the rage in the enterprise computing, because it can deliver levels of reliability and fault tolerance unachievable really with the "free threading" approach. A number of actor programming languages (e.g., Erlang, Scala, D) as well as actor libraries and frameworks (e.g., Akka, Killim, Jetlang) are in extensive use. QP/C++ is one of such frameworks, but is designed specifically for C++ and real-time embedded applications.
The use of QP/C++ gets especially attractive if you consider using the free "QM modeling tool":http://www.state-machine.com/qm for designing QP applications graphically and generating code automatically.
The QP/C++ Development Kit (QDK-C++) for Qt, with example code, example QM models, and Application Note are available for download from "SourceForge":http://sourceforge.net/projects/qpc/files/QDK-Cpp_Qt.