A C++ library of Concurrent Data Structures
Maintenance release
Maintenance release - Added: apply( Func f ) method to containers based on flat combining. This method allows to execute any function over underlying container in exclusive mode. - Removed: -fno-strict-aliasing requirement - Fixed: a serious bug in WeakRingBuffer::front() - Fixed: memcpy bug in CuckooHash with store_hash feature
Maintenance release
find_package(LibCDS)
add_library(mylib INTERFACE)
target_link_libraries(mylib INTERFACE LibCDS::cds)
IterableList
- an implementation of ordered list with thread-safe iterator. MichaelSet/Map and SplitListSet/Map support this type of ordered list and thread-safe iterable too.erase()
and find()
bugs that cause to infinite loop or to program crash in rare case.MichaelSet::emplace()
function. New node was created twice from the arguments by move semantics. However, move semantics may change internal state of the argument that can lead to an incorrect element and even an incorrect key that breaks the set logic.FeldmanHashSet::erase_at( iterator )
: due an error in precondition checking the function may incorrectly return false.cds::opt::buffer
option is divided to initialized (cds::opt::v::initialized_dynamic_buffer
, cds::opt::v::initialized_static_buffer
) and uninitialized (cds::opt::v::uninitialized_dynamic_buffer
,
cds::opt::v::uninitialized_static_buffer
) ones. The old cds::opt::v::dynamic_buffer
and cds::opt::v::static_buffer
classes are removed.VyukovMPMCCycleQueue
internal buffer. To prevent this bug the queue uses an uninitialized buffer now.MSPriorityQueue
--detail-level=N
specifies what test should be ran: each test with level not greater than N will be ran. Instead of command line arg the enviromnent variable CDSTEST_DETAIL_LEVEL=N
may be used. By default, the detail level is 0 that means only limited set of the test will be ran.General release
- Added: FeldmanHashSet/Map - an interesting hash map algorithm
based on multi-level array, requires perfect hashing or fixed-sized keys.
Supports thread-safe bidirectional iterators.
- Added: BronsonAVLTreeMap - Bronson's et al AVL tree implementation
- Added: CMake build script, thanks to Eugeny Kalishenko
- Changed: SplitList performance improving, thanks to Mike Krinkin
- Changed: semantic of member functions extract(), get() and its
variants for MichaelList RCU-based specialization: extract() does not
require RCU locking, get() now returns special wrapper object of type raw_ptr,
see doc.
Thus, semantics of extract()/get() of all RCU-based set and maps based on
MichaelList (MichaelSet/Map, SplitListSet/Map) has been changed too.
- Changed: SplitListSet/Map functions get() and get_with() return special wrapper
object of type raw_ptr, see doc.
- Removed: SplitListSet/Map force_dispose() function.
- cds::lock namespace is renamed to cds::sync. All classes defined in cds::lock namespace
are moved to cds::sync with new names (for example, cds:: lock ::SpinLock is renamed to
cds::sync::spin_lock). cds::lock namespace and its contents is deprecated, it is kept
for backward compatibility.
- The library has been checked by ThreadSanitizer, a lot of bugs has been fixed
- Added support for clang 3.7 with libc++