lpd>Раньше лет 15 назад в Linux потоки так и были реализованы без sys_futex(). Детали не знаю, но для переключения исполнения между потоками можно использовать user-level libc-функции setjmp()/longjmp().
любопытно! покопаю в эти setjmp()/longjmp()
но, подозреваю, там опять же без прерывания текущего потока исполнения по таймеру
т.е нечто вроде корутин