C++ Concurrency Package
Designing concurrent data structures for multiprocessor/multicore systems introduces numerous challenges with respect to performance and scalability. On today's machines, the layout of processors and memory, the layout of data in memory, the communication load on the various elements of the multiprocessor architecture all influence performance.
Furthermore, the issues of correctness and performance are closely tied to each other: algorithmic enhancements that seek to improve performance often make it more difficult to design and verify a correct data structure implementation.
For this reason, it is often helpful for programmers to have a ready made collection of data structure and synchronization constructs. The elements in this collection can be used directly in applications, or as templates for user specific constructs. In Java, such concurrency package has been in use for several years.
This is an attempt to provide similar tools for C++ programmers.
There are many similarities between this package and the Java concurrency package, in particular we have made a concerted effort to provide the same constructs and functionality for C++ programmers, and preserve similar interfaces whenever possible.
Version 4.0 is available for download here. Developed by Moran Tzafrir.