Boost.Join is an asynchronous, message based C++ concurrency library based on join calculus. It is applicable both to multi-threaded applications and to the orchestration of asynchronous, event-based applications. It follows Comega's design and implementation and builds with Boost facilities. It provides a high level concurrency API with asynchronous methods, synchronous methods, and chords which are "join-patterns" defining the synchronization, asynchrony, and concurrency.
|Tags||Software Development Libraries Application Frameworks|
|Operating Systems||POSIX Other Linux Windows|
Release Notes: The function level API was dropped to simplify the interface and implementation. The signature of a chord's function can be directly mapped from the types of its ports. boost::lambda or phoenix is used to define a chord's function. The "pimpl" idiom was applied to port and joint classes.
Release Notes: This release added schedulers as the template policy arguments of the actor class, added timed synchronous calls, added documentation and samples for the port API 4, and expanded documentation about Join internals.
Release Notes: The code was updated to support dynamic flow-based programming in Join.
Release Notes: Major design changes were made for simplicity and efficiency. The library and executables are now smaller and faster. The design was kept more consistent with Cw (by removing guards which are error-prone and multi synch methods). Many changes were made to reduce copying and buffering. The documentation was updated with design changes and the addition more information about implementation and integration with other libraries.
Release Notes: The Framework is complete with the addition of chord_override and chord_remove. The documentation was cleaned up. Two more tutorials were added to explore the usage of Join. The first shows how to implement thread safe event dispatching. The second shows how to implement data parallel algorithms (parallel loop and map-reduce) in a way similar to Intel's threading building block library, which is helpful to take full advantage of multi-core machines.