https://www.cs.kent.ac.uk/projects/ofa/c++csp/
C++CSP2
Easy Concurrency for C++
Introduction
Multicore processors have arrived on the desktop, and developers are beginning to want ways of exploiting this parallelism. The standard locks-and-threads (or monitors and threads) approach is easy to get wrong, and difficult to understand. C++CSP2 is a library that provides easy mechanisms for concurrent C++ programming. The CSP-derived approach is to eliminate sharing of data between concurrent processes. Processes are separate pieces of code that communicate explicitly via channels. When programming a process, you only need to consider the channel communications (and other synchronisations, such as barriers), and do not need to worry about race hazards involving shared data or scheduling corner-cases.