好東西需要分享,不解釋.
#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;
}
#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;
}