#include #include #include #include LPVOID Fibers[4]; VOID FiberRoutine( LPVOID lpParameter ) { DWORD FiberId; FiberId = (DWORD)GetFiberData(); printf("Init: In Fiber %d, %x Param %d\n",FiberId,GetCurrentFiber(),lpParameter); while(1) { printf("In Fiber %d %d\n",FiberId,(DWORD)GetFiberData() ); Sleep(10); if ( FiberId == 3 ) { SwitchToFiber(Fibers[0]); } else { SwitchToFiber(Fibers[FiberId+1]); } } } int _cdecl main(void) { DWORD IdealProcessor; IdealProcessor = SetThreadIdealProcessor(GetCurrentThread(),MAXIMUM_PROCESSORS); printf("IdealProcessor %d\n",IdealProcessor); Fibers[0] = ConvertThreadToFiber((LPVOID)0); Fibers[1] = CreateFiber(0,FiberRoutine,(LPVOID)1); Fibers[2] = CreateFiber(0,FiberRoutine,(LPVOID)2); Fibers[3] = CreateFiber(0,FiberRoutine,(LPVOID)3); FiberRoutine((LPVOID)99); return 1; }