// @ZBS { // *MODULE_NAME Fiber Wrapper // *MASTER_FILE 1 // +DESCRIPTION { // Provides a wrapper around Win32 fiber API // } // *PORTABILITY win32 // *REQUIRED_FILES zfiber.cpp zfiber.h // *VERSION 1.0 // +HISTORY { // } // +TODO { // } // *SELF_TEST no // *PUBLISH yes // } // OPERATING SYSTEM specific includes: #define _WIN32_WINNT (0x0500) #include "windows.h" // SDK includes: // STDLIB includes: #include "assert.h" // MODULE includes: #include "zfiber.h" // ZBSLIB includes: #define ZFIBERS_MAX (100) void *zfibers[ZFIBERS_MAX] = {0,}; int zfibersToDie[ZFIBERS_MAX] = {0,}; int zfibersToDieCount = 0; void zfiberYield() { SwitchToFiber( zfibers[0] ); } void zfiberStart( void *func, int arg ) { void *newFiber = CreateFiber( 4096, (LPFIBER_START_ROUTINE)func, (void *)arg ); for( int i=1; i