GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - sysprog21/concurrent-programs: Complementary Concurrency Programs for course "Linux Kernel Internals"

BranchesTags
Open more actions menu

Latest commit

 

History

101 Commits
101 Commits

Folders and files

NameName
Last commit message
Last commit date
broadcast
broadcast
 
 
channel
channel
 
 
cmap
cmap
 
 
coro
coro
 
 
fiber
fiber
 
 
hashmap
hashmap
 
 
hp_list
hp_list
 
 
httpd
httpd
 
 
lf-queue
lf-queue
 
 
lf-timer
lf-timer
 
 
lfring
lfring
 
 
list-move
list-move
 
 
map-reduce
map-reduce
 
 
mbus
mbus
 
 
mcslock
mcslock
 
 
mpmc
mpmc
 
 
mpsc
mpsc
 
 
mutex
mutex
 
 
picosh
picosh
 
 
preempt_sched
preempt_sched
 
 
qsbr
qsbr
 
 
rcu-list
rcu-list
 
 
rcu_queue
rcu_queue
 
 
redirect
redirect
 
 
refcnt
refcnt
 
 
ringbuf-shm
ringbuf-shm
 
 
ringbuffer
ringbuffer
 
 
seqlock
seqlock
 
 
spmc
spmc
 
 
thread-rcu
thread-rcu
 
 
tinync
tinync
 
 
tpool
tpool
 
 
work-steal
work-steal
 
 
.clang-format
.clang-format
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 

Repository files navigation

Complementary Programs for course "Linux Kernel Internals"

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.

Project Listing

  • 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.
    • refcnt: A generic reference counting.
    • work-steal: A work-stealing scheduler.
    • mutex: A low-memory-footprint mutex.
  • Producer–consumer problem
    • spmc: A concurrent single-producer/multiple-consumer queue.
    • mpsc: An unbounded lockless single-consumer/multiple-producer FIFO queue.
    • mpmc: A multiple-producer/multiple-consumer (MPMC) queue using Linux futex.
    • lf-queue: A bounded lock-free queue.
    • channel: A Linux futex based Go channel implementation.
    • broadcast: A lock-free MPMC broadcast pub-sub queue.
  • 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
    • mcslock: An MCS lock implementation.
    • seqlock: A seqlock (sequence lock) implementation.
    • 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.
    • thread-rcu: A Linux Kernel style thread-based simple RCU.
    • cmap: A concurrent map implementation based on RCU.
  • Applications
    • httpd: A multi-threaded web server.
    • map-reduce: word counting using MapReduce.
    • redirect: An I/O multiplexer to monitor stdin redirect using timerfd and epoll.
    • picosh: A minimalist UNIX shell.

License

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.

About

Complementary Concurrency Programs for course "Linux Kernel Internals"

Topics

concurrencyconcurrency-patternslinuxmultithreadingposix-threads

Resources

Readme
BSD-2-Clause license
Activity
Custom properties

Stars

439 stars

Watchers

23 watching

Forks

96 forks
Report repository

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.