Awesome-lockfree - A collection of resources on wait-free and lock-free programming

Overview

Awesome Lock-Free

A collection of resources on wait-free and lock-free programming.

🔥 🔥 🔥 Even better resource from MattPD: C++ links: atomics, lock free, memory model.

Libraries

  • Boost.Lockfree - Boost lock-free data structures.
  • ConcurrencyKit - Concurrency primitives.
  • crossbeam - Rust library for concurrent programming.
  • Folly - Facebook Open-source Library (has good implementation of MPMC queue).
  • Junction - Concurrent data structures in C++.
  • MPMCQueue - A bounded multi-producer multi-consumer lock-free queue written in C++11.
  • SPSCQueue - A bounded single-producer single-consumer wait-free and lock-free queue written in C++11.
  • Seqlock - Implementation of Seqlock in C++.
  • Userspace RCU - liburcu is a userspace RCU (read-copy-update) library.
  • libcds - A C++ library of Concurrent Data Structures.
  • liblfds - portable, license-free, lock-free data structure library written in C.
  • xenium - A C++ library providing various concurrent data structures and reclamation schemes.

Websites

Blogs

Books

Papers

Talks

About

This list was compiled by Erik Rigtorp <[email protected]>.

Issues
  • Xenium

    Xenium

    Hi,

    I am working on a C++ library called "Xenium" that provides various concurrent data structures and memory reclamation schemes: https://github.com/mpoeter/xenium Maybe you can take a look at it and add it to your list. 🙂

    Cheers, Manuel

    opened by mpoeter 2
  • Intel oneTBB?

    Intel oneTBB?

    Hi, thanks for keeping the list, a nice collection! I do not know if Intel's oneTBB, neé TBB, belongs in. Its not a “lock-free” library, rather a “don't think about locks and build robust high-throughput HPC software that scales” library. At the core, it uses both locking and lock-free algorithms, and takes care about task affinity, data cache locality, per-thread memory allocation to reduce allocation contention, and other crazy stuff. But most of this stuff is deep at the core; it focuses on high-level design blocks (hence the name). xPxC queues and other concurrent containers are probably among the lowest level algorithms which it surfaces. Up to you.

    opened by kkm000 1
  • Broken link

    Broken link

    The link for "Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms" is broken. The working one is: https://www.cs.rochester.edu/u/scott/papers/1996_PODC_queues.pdf

    opened by eugnsp 1
  • Add crossbream-rs to list

    Add crossbream-rs to list

    The list is appealing for concurrency hobbyists. However, it does not have my favourite crossbeam, which is a Rust library for concurrency lovers. This article should give an overview of current status.

    In brief, crossbeam already provides:

    • MsQueue: lock-free Michael-Scott queue
    • TreiberStack: lock-free stack
    • lock-free skiplist
    opened by jerry73204 0
Owner
Erik Rigtorp
Erik Rigtorp
Forkpool - A bleeding-edge, lock-free, wait-free, continuation-stealing scheduler for C++20

riften::Forkpool A bleeding-edge, lock-free, wait-free, continuation-stealing scheduler for C++20. This project uses C++20's coroutines to implement c

Conor Williams 123 Jun 20, 2022
Concurrency Kit 2.1k Jun 18, 2022
Simple and fast C library implementing a thread-safe API to manage hash-tables, linked lists, lock-free ring buffers and queues

libhl C library implementing a set of APIs to efficiently manage some basic data structures such as : hashtables, linked lists, queues, trees, ringbuf

Andrea Guzzo 381 Jun 15, 2022
A fast multi-producer, multi-consumer lock-free concurrent queue for C++11

moodycamel::ConcurrentQueue An industrial-strength lock-free queue for C++. Note: If all you need is a single-producer, single-consumer queue, I have

Cameron 6.8k Jun 24, 2022
A fast single-producer, single-consumer lock-free queue for C++

A single-producer, single-consumer lock-free queue for C++ This mini-repository has my very own implementation of a lock-free queue (that I designed f

Cameron 2.7k Jun 23, 2022
Fast, generalized, implementation of the Chase-Lev lock-free work-stealing deque for C++17

riften::Deque A bleeding-edge lock-free, single-producer multi-consumer, Chase-Lev work stealing deque as presented in the paper "Dynamic Circular Wor

Conor Williams 113 May 29, 2022
GECOS: A lock-free synchronization mechanism

GECOS GECOS is a lock-free synchronization mechanism, and this repository compares various well-known mechanisms such as RCU and HP (Hazard Pointers).

null 6 Sep 9, 2021
Bikeshed - Lock free hierarchical work scheduler

Branch OSX / Linux / Windows master master bikeshed Lock free hierarchical work scheduler Builds with MSVC, Clang and GCC, header only, C99 compliant,

Dan Engelbrecht 79 Jun 15, 2022
Concurrent-deque - Lock-free concurrent work stealing deque in C++

A lock-free work-stealing deque This is a C++ implementation of the Chase-Lev deque, a concurrent single-producer, multi-consumer queue presented in t

Shubham Lagwankar 25 Mar 13, 2022
Rpmalloc - Public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C

rpmalloc - General Purpose Memory Allocator This library provides a public domain cross platform lock free thread caching 16-byte aligned memory alloc

Mattias Jansson 1.5k Jun 23, 2022
Kokkos C++ Performance Portability Programming EcoSystem: The Programming Model - Parallel Execution and Memory Abstraction

Kokkos: Core Libraries Kokkos Core implements a programming model in C++ for writing performance portable applications targeting all major HPC platfor

Kokkos 1k Jun 25, 2022
Arcana.cpp - Arcana.cpp is a collection of helpers and utility code for low overhead, cross platform C++ implementation of task-based asynchrony.

Arcana.cpp Arcana is a collection of general purpose C++ utilities with no code that is specific to a particular project or specialized technology are

Microsoft 63 Jun 22, 2022
A General-purpose Parallel and Heterogeneous Task Programming System

Taskflow Taskflow helps you quickly write parallel and heterogeneous tasks programs in modern C++ Why Taskflow? Taskflow is faster, more expressive, a

Taskflow 6.9k Jun 23, 2022
A General-purpose Parallel and Heterogeneous Task Programming System

Taskflow Taskflow helps you quickly write parallel and heterogeneous task programs in modern C++ Why Taskflow? Taskflow is faster, more expressive, an

Taskflow 6.9k Jun 22, 2022
High Performance Linux C++ Network Programming Framework based on IO Multiplexing and Thread Pool

Kingpin is a C++ network programming framework based on TCP/IP + epoll + pthread, aims to implement a library for the high concurrent servers and clie

null 14 Jun 19, 2022
ParallelComputingPlayground - Shows different programming techniques for parallel computing on CPU and GPU

ParallelComputingPlayground Shows different programming techniques for parallel computing on CPU and GPU. Purpose The idea here is to compute a Mandel

Morten Nobel-Jørgensen 2 May 16, 2020
C++React: A reactive programming library for C++11.

C++React is reactive programming library for C++14. It enables the declarative definition of data dependencies between state and event flows. Based on

Sebastian 952 Jun 19, 2022
:copyright: Concurrent Programming Library (Coroutine) for C11

libconcurrent tiny asymmetric-coroutine library. Description asymmetric-coroutine bidirectional communication by yield_value/resume_value native conte

sharow 347 Jun 5, 2022
A competitive programming helper tool, which packages included libraries into a single file, suitable for online judges.

cpack Cpack is a competitive programming helper tool, which packages the main source file along with included libraries into a single file, suitable f

PetarMihalj 11 Apr 22, 2022