A C++ library providing lock-free and fine-grained concurrent data structures with safe memory reclamation algorithms.
libcds is a C++ library of concurrent data structures that provides thread-safe containers and safe memory reclamation algorithms. It solves the problem of building scalable multi-threaded applications by offering lock-free and fine-grained lock-based alternatives to standard containers, eliminating the need for external synchronization.
C++ developers building high-performance, multi-threaded applications such as servers, databases, or real-time systems who need scalable concurrent data structures.
Developers choose libcds for its comprehensive collection of well-researched, production-ready concurrent containers, support for safe memory reclamation algorithms like Hazard Pointers and RCU, and its header-only design that integrates easily into existing C++ projects.
A C++ library of Concurrent Data Structures
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers lock-free stacks, queues, maps, sets, and skip-lists, plus fine-grained lock-based AVL trees, providing multiple options for different concurrent scenarios as listed in the README.
Includes Hazard Pointer and user-space RCU algorithms built-in, essential for preventing memory leaks in multi-threaded environments without manual implementation.
Mostly template-based with only the SMR core as a shared library, simplifying integration into existing C++ projects without complex linking.
FeldmanHashMap/Set provides bidirectional iterators safe for traversal during concurrent modifications, a rare feature highlighted in the README.
Requires all projects to be compiled with identical flags, especially for DCAS support, which can complicate cross-platform development and lead to linking errors.
Assumes deep concurrent programming knowledge; the README lacks tutorials, focusing on academic references rather than practical guidance.
DCAS atomic primitives for enhanced performance are not supported in MS VC++, potentially reducing scalability on Windows without workarounds.