A very simple implementation of an M:N threading model similar to the one used by Go's Goroutines and many other user-space threading libraries that implement co-routines (for example, C++20 and Kotlin).
We use round-robin scheduling using a queue of waiting user-space threads to schedule them onto a fixed number of kernel threads (specified using the system_init
function).
Use the provided makefile to compile the built-in driver program to demonstrate that our implementation progress without deadlocks.
make all # generates test binary
./uthreaddriver
make clean # cleans up build artifacts