Active Objects

The abstraction presented here seperates various tasks through means of a message queue whereby the queue will activate the underlying task whenever a new message comes in. Using this abstraction it becomes possible to have
  1. time speration between threads (they will not influence each others execution/not wait for each other),
  2. space separation (different tasks will not write into each others data space)
  3. scheduling independence (we can run multiple tasks with one, two or more processes)
  4. syntactical separation (each task is declared in its own source file
The combination of the above leads to a lockfree programming style, which thus also leads to a noticable lack of deadlock and race-conditions. The library consists of a precompiler that compiles a task declaration into C++ source and a C++ runtime that deals with the activation and deactivation of threads.

End User Documentation - An article describing the inner working of the Active Object library
Presentation - a short presentation on why higher level abstractions are useful and necessary
Bug Tracker choose the component 'Active'. Don't forget to check out closed bugs.
Source code documentation - generated with doxygen
Source - The package is called active-2.x.tgz and contains the runime and the precompiler
Contact - werner@yellowcouch.org