Concurrency Kit provides a plethora of concurrency primitives and lock-less and lock-free data structures designed to aid in the design and implementation of high performance scalable concurrent systems. It was designed to minimize dependencies on operating system-specific interfaces, and most of the interface relies only on a strict subset of the standard library and more popular compiler extensions.
|Tags||concurrency Multicore multithread pthreads lock-free|
|Operating Systems||FreeBSD Linux (64 Bit) Mac OS X Solaris (Sparc 64 bit) Solaris MinGW Windows (MinGW)|
|Implementation||C99 GNU99 C Assembly|
Release Notes: This release fixes a calculation error in ck_bitmap_union, which could lead to a crash condition. This was missed due to a lack of the typical testing cycle for the function. All other functionality is unaffected.
Release Notes: Critical bugfixes were made to ck_bytelock for unslotted readers and 32-bit architectures. A new robin-hood hash set implementation was added which provides excellent stable performance for delete and write-heavy workloads while still providing wait-free progress for writers and lock-free progress for readers. A new operation has been added to the bitmap, ck_bitmap_union, which provides a (non-linearized) union of two bitmaps. Some other API changes were made to ck_bitmap. The library now uses the correct naming convention for Darwin targets.
Release Notes: This release includes a critical bug fix for ck_ht_gc that affects CK_HT_MODE_DIRECT hash tables (it does not affect bytestring hash tables). Additional optimizations were made to ck_ht_gc and ck_hs_gc for empty hash tables.
Release Notes: Acquire and release fences have finally been introduced. Significant performance improvements were made to spinlock, rwlock, pflock, cohorts, blocks, and bytelocks on RMO and PSO architectures (PPC*, SPARCv9+, and ARM). Significant improvements have been made to ck_hs write-side performance in the presence of deletes. Latency improvements to ck_epoch for read-side critical sections on x86 were introduced. Last but not least, the parametric ck_ring has been re-introduced following discussion and feedback.
Release Notes: This release includes significant performance improvements to the hash set and hash table implementations, support for shared memory and DMA backed bounded ring buffers (currently only for the pointer-sized implementation), hierarchical CLH spinlocks, performance improvements to epoch reclamation, support for finer-grained memory barriers on ARMv7+, and documentation for restricted transactional memory.