NPS is a POSIX/ANSI-C based library for Unix platforms which
provides non-preemtive scheduling for multiple threads of execution
("multi-threading") inside server applications. All threads run in the
same address space of the server application, but each thread has it's
own individual run-time stack and program-counter.
The thread scheduling itself is done in a cooperative way, i.e. the
threads are managed by a priority- and event-based non-preemtive
scheduler. The intention is that this way one can achieve better
portability and run-time performance than with preemtive scheduling.
The event facility allows threads to wait until various types of
events occur, including pending I/O on filedescriptors, elapsed
timers, pending I/O on message ports, thread and process termination,
and even customized callback functions.
More details:
http://www.engelschall.com/sw/nps/
ftp://ftp.engelschall.com/sw/nps/