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 includes a new low latency copy-safe single-writer read-write lock, a reference implementation of task-fair read-write locks, significant improvements to the build system and a lot of new functionality for ck_bitmap, a bugfix for 64-bit immediates on x86_64 for ck_pr, deinitialization routines for ck_hp_fifo and ck_fifo, a bugfix for ck_bytelock on 32-bit architectures, new ck_cc primitives, and a compilation fix for type specialized ck_ring. Last but not least, documentation has been added for ck_pflock.
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.