A non-preemptive thread library that supports create, yield, join, joinall and exit functionalities on threads with semaphore control