A thread library provides the programmer with an API for creating and managing threads.
There are two primary ways of implementing a thread library. The first approach is to provide a library entirely in user space with no kernel support.
All code and data structures for the library exist in user space. This means that invoking a function in the library results in a local function call in user space and not a system call.