Fiber

好东西需要分享,不解释.

#define  _WIN32_WINNT 0x0500

#include 
< windows.h >
#include 
< tchar.h >
#include 
< stdio.h >

LPVOID P
= NULL;
LPVOID V
= NULL;
LPVOID M
= NULL;

TCHAR chFood[
256 ] = { 0 };

void  abc(LPVOID Param)
{
    _tprintf(_T(
" call abc threadid(%d)\n " ), GetCurrentThreadId());
    SwitchToFiber(Param);
}

VOID WINAPI test(LPVOID Param)
{
    
int  i  =   0 ;
    i 
=   2 ;
    _tprintf(_T(
" befor i = %d threadid(%d)\n " ), i, GetCurrentThreadId());
    abc( Param );

    i
++ ;
    _tprintf(_T(
" after i = %d threadid(%d)\n " ), i, GetCurrentThreadId());

    SwitchToFiber(Param);
}

int  main( void )
{
    M
= ConvertThreadToFiber(NULL);

    V
= CreateFiber( 4096 , test, M);

    SwitchToFiber(V);

    _tprintf(_T(
" i am back haha thread(%d)\n " ), GetCurrentThreadId());

    SwitchToFiber(V);

    DeleteFiber(V);

    
return   0 ;
}

你可能感兴趣的:(Fiber)