db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%T C++CSP2: A Many\-to\-Many Threading
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%A Neil C.C. Brown
db_connect: Could not connect to paper db at "wotug@dragon.kent.ac.uk"
%E Alistair A. McEwan, Steve Schneider, Wilson Ifill, Peter H. Welch
%B Communicating Process Architectures 2007
%X The advent of mass\-market multicore processors provides
exciting new opportunities for parallelism on the desktop.
The original C++CSP &\[sh]8211; a library providing
concurrency in C++ &\[sh]8211; used only user\-threads,
which would have prevented it taking advantage of this
parallelism. This paper details the development of C++CSP2,
which has been built around a many\-to\-many threading model
that mixes user\-threads and kernel\-threads, providing
maximum flexibility in taking advantage of multicore and
multi\-processor machines. New and existing algorithms are
described for dealing with the run\-queue and implementing
channels, barriers and mutexes. The latter two are
benchmarked to motivate the choice of algorithm.Most of
these algorithms are based on the use of atomic
instructions, to gain maximal speed and efficiency. Other
issues related to the new design and related to implementing
concurrency in a language like C++ that has no direct
support for it, are also described. The C++CSP2 library will
be publicly released under the LGPL before CPA 2007.