A C++ library of Concurrent Data Structures
See the codeThe Concurrent Data Structures (CDS) library is a collection of concurrent containers that don't require external (manual) synchronization for shared access, and safe memory reclamation (SMR) algorithms like Hazard Pointer and user-space RCU that is used as an epoch-based SMR.
CDS is mostly header-only template library. Only SMR core implementation is segregated to .so/.dll file.
The library contains the implementations of the following containers:
Generally, each container has an intrusive and non-intrusive (STL-like) version belonging to cds::intrusive and cds::container namespace respectively.
Version 2.x of the library is written on C++11 and can be compiled by GCC 4.8+, clang 3.6+, Intel C++ 15+, and MS VC++ 14 (2015) and above
Download the latest release from http://sourceforge.net/projects/libcds/files/
See online doxygen-generated doc here: http://libcds.sourceforge.net/doc/cds-api/index.html
How to build
Some parts of libcds may depend on DCAS (double-width compare-and-swap) atomic primitive if
the target architecture supports it. For x86, cmake build script enables -mcx16 compiler flag that
switches DCAS support on. You may manually disable DCAS support with the following command line flags
in GCC/clang (for MS VC++ compiler DCAS is not supported):
-DCDS_DISABLE_128BIT_ATOMIC - for 64bit build-DCDS_DISABLE_64BIT_ATOMIC - for 32bit buildAll your projects AND libcds MUST be compiled with the same flags - either with DCAS support or without it.
**Building libcds -use vcpkg
You can download and install libcds using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install libcds
The libcds port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.
Pull request requirements
Stack
Queue
Deque
Map, set
Ordered single-linked list
Priority queue
Tree
SMR
Flat Combining technique
(top 24 of 60)
289 followers · starred Feb 2015
2,981 followers · starred Aug 2018
188 followers · starred Jun 2020
27 followers · starred Mar 2017
A C++ library of Concurrent Data Structures
See the codeThe Concurrent Data Structures (CDS) library is a collection of concurrent containers that don't require external (manual) synchronization for shared access, and safe memory reclamation (SMR) algorithms like Hazard Pointer and user-space RCU that is used as an epoch-based SMR.
CDS is mostly header-only template library. Only SMR core implementation is segregated to .so/.dll file.
The library contains the implementations of the following containers:
Generally, each container has an intrusive and non-intrusive (STL-like) version belonging to cds::intrusive and cds::container namespace respectively.
Version 2.x of the library is written on C++11 and can be compiled by GCC 4.8+, clang 3.6+, Intel C++ 15+, and MS VC++ 14 (2015) and above
Download the latest release from http://sourceforge.net/projects/libcds/files/
See online doxygen-generated doc here: http://libcds.sourceforge.net/doc/cds-api/index.html
How to build
Some parts of libcds may depend on DCAS (double-width compare-and-swap) atomic primitive if
the target architecture supports it. For x86, cmake build script enables -mcx16 compiler flag that
switches DCAS support on. You may manually disable DCAS support with the following command line flags
in GCC/clang (for MS VC++ compiler DCAS is not supported):
-DCDS_DISABLE_128BIT_ATOMIC - for 64bit build-DCDS_DISABLE_64BIT_ATOMIC - for 32bit buildAll your projects AND libcds MUST be compiled with the same flags - either with DCAS support or without it.
**Building libcds -use vcpkg
You can download and install libcds using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install libcds
The libcds port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.
Pull request requirements
Stack
Queue
Deque
Map, set
Ordered single-linked list
Priority queue
Tree
SMR
Flat Combining technique
(top 24 of 60)
289 followers · starred Feb 2015
2,981 followers · starred Aug 2018
188 followers · starred Jun 2020
27 followers · starred Mar 2017