GNU Portable Threads (Pth) is a very portable POSIX/ANSI-C based library for Unix platforms providing non-preemptive priority-based scheduling for multiple threads of execution ("multithreading") inside server applications. All threads run in the same address space, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable. The scheduling is done in a cooperative way, i.e. the threads are dispatched based on priority and pending events. 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.