libfiber

libfiber [1] is an (alpha quality!) user-space cooperative threading library in C, complete with asynchonous I/O support. It allow you to run multiple concurrent fibers, each with it's own fixed stack, and switch between them automatically during I/O calls, or manually via fib_yield().

libfiber supports i386 and amd64 processors, and works under Windows, Linux, and FreeBSD (should probably work under other *BSD systems too).