I just discovered pth (not the new one npth), yielding threads in 1999, wtf happens at GNU? 20 years before anyone applied that and said "holy shit". 1999.
Edit:
The thread scheduling itself is done in a cooperative way, i.e., the threads are managed by a priority- and event-based non-preemptive scheduler.
1999