NPS - Non-Preemtive Thread Scheduling Library Copyright (c) 1999 Ralf S. Engelschall. NPS is a portable 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. The documentation and latest release can be found on http://www.engelschall.com/sw/nps/ ftp://ftp.engelschall.com/sw/nps/