#include jmp_buf ctxt[2]; int cur_ctxt = 0; void next_context(); main() { context(0); context(1); next_context(); } void next_context() { cur_ctxt = (cur_ctxt + 1) % 2; longjmp(ctxt[cur_ctxt], 1); } context(int c) { if (setjmp(ctxt[c]) == 0) return; while (1) { printf("in context %d\n", c); next_context(); } }