RPA is a portable C++ library of STL-compatible multi-threaded
algorithms. It allows to
easily parallelize existing programs based on STL algorithms, and tries
to be as close as possible to sequential architectures. At the same
time, it allows to use OS-specific synchronization primitives, and
gives the possibility to add template specializations for more
performance, based on containers and data types.
RPA does not enforce a specific architectures and allows an
error-and-trial approach to parallelization. At any time, it is
possible to revert to a pure sequential behaviour, thus greatly
reducing the risks due to parallelization. Its 100% templates approach
takes the most of any existing C++ compiler. It does not need any
language extension nor library, and is fully portable in the sense that
any type of mutex, threads or condition variable can be used.
It does not enforce specific containers or architectural changes, and
tries to match exactly STL algorithms and philosophy. It assumes that
parallelization is a risky technology, that can be brought only to
working sequential programs, a long time after they have been designed,
while they are still being maintained, and only with hazardous success.