Protothreads
スタックを複数作らず、setjump/longjumpも使わずに完全にCのsyntaxでスレッドが利用できるというもの。
仕組みについては下記ページに書かれてる。
http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
マクロで頑張ってステートを保持して、関数を中断して、次の呼び出しで再開、という仕組みみたい。非常に面白い作りになってる。
ただ、仕組みからして、スレッドから呼び出した関数内でコンテキストスイッチができないのが困るなぁ。