This article is from the Threads Programming FAQ, by Bryan O'Sullivan email@example.com with numerous contributions by others.
In terms of context switch time, user-space threads are the fastest,
with two-level threads coming next (all other things being equal).
However, if you have a multiprocessor, user-level threads can only be
run on a single CPU, while both two-level and pure kernel-supported
threads can be run on multiple CPUs simultaneously.