Pthreads. Upthreads is a user space implementation of the POSIX thread library implemented using setjmp/longjump (or equivalent). This libpthreads implementation is useful when threads are needed in deeply embedded systems with little OS support. I developed Upthreads while considering a port of a JVM onto an extremely primitive OS -- nearly bare hardware.

Add-Ons. In addition to the basic pthreads, UPthread can also be configured to support POSIX Message Queues and POSIX Semaphores.

Process Scope. All threads operate with in a single "process." The system/OS outside of UPthreads has no knowledge of the threads. In this since, UPthreads have process scope (vs. system scope).

Non-preemptible. UPthreads are very fast and very compact. What you lose with Upthreads is pre-emptibility and, hence, probably some response time.

NuttX. UPthreads has been extended to provide a full-featured, pre-emptible, multi-threaded RTOS. That RTOS is called NuttX and is also available in SourceForge.

CheapThreads. CheapThreads (FreshMeat, Home, Google) is a similar, more mature project. UPthreads is a separate development (although the design is inspired in areas by CheapThreads). UPthreads differs primarily in that it has a BSD licence and attempts to support standard, POSIX interfaces.

Protothreads Protothreads are extremely lightweight, stackless threads designed for severely memory constrained systems.

UThread. The UThread project (SourceForge) looks interesting as well but has never released any source code.