function state1() { ::suspend("state1"); return state2(); } function state2() { ::suspend("state2"); return state3(); } function state3() { ::suspend("state3"); return state1(); } local statethread = ::newthread(state1) ::print(statethread.call()+"\n"); for(local i = 0; i < 10000; i++) ::print(statethread.wakeup()+"\n");