This distribution is a collection of programs that are generally unrelated, except in that they all deal with the concurrent programming. The main purpose of these programs is to be illustrative and educational.
- Coroutine
- coro: A coroutine implementation with setjmp/longjmp.
- tinync: A tiny
nc
implementation using coroutine. - fiber: A user-level thread (fiber) using
clone
system call. - preempt_sched: A preemptive userspace multitasking based on a SIGALRM signal.
- Multi-threading Paradigms
- tpool: A lightweight thread pool.
- Producer–consumer problem
- Lock-Free Data Structure
- ringbuffer: A lock-less ring buffer.
- lfring: A lock-free multiple-producer/multiple-consumer (MPMC) ring buffer.
- ringbuf_shm: An optimized lock-free ring buffer with shared memory.
- mbus: A concurrent message bus.
- hashmap: A concurrent hashmap implementation.
- lf-timer: A lock-free timer.
- Synchronization
- hp_list: A concurrent linked list utilizing Hazard Pointers.
- rcu_list: A concurrent linked list utilizing the simplified RCU algorithm.
- qsbr: An implementation of Quiescent state based reclamation (QSBR).
- list-move: Evaluation of two concurrent linked lists: QSBR and lock-based.
- rcu_queue: An efficient concurrent queue based on QSBR.
- Applications
- httpd: A multi-threaded web server.
- map-reduce: word counting using MapReduce.
- redirect: An I/O multiplexer to monitor stdin redirect using
timerfd
andepoll
. - picosh: A minimalist UNIX shell.
The above projects are released under the BSD 2 clause license. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.