迁程CreateFiber

#include 

LPVOID lpThread;

VOID CALLBACK FiberProc(PVOID lpParameter);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	// 将主线程切换为纤程,为主纤程,只有转换为纤程后才可以切换至其他纤程
	lpThread=ConvertThreadToFiber(NULL);
	if (lpThread==NULL)
	{
		OutputDebugString(TEXT("主线程切换迁程失败"));
		return 0;
	}
	LPVOID lpFiber=CreateFiber(NULL,FiberProc,NULL);  //创建迁程
	SwitchToFiber(lpFiber);  //切换到当前迁程执行
	DeleteFiber(lpFiber);    //释放迁程

	return 0;
}

VOID CALLBACK FiberProc(PVOID lpParameter)
{
	MessageBox(0,TEXT("哈哈"),TEXT("提示"),MB_OK);

	//操作完成,准备交出执行,返回到主纤程中
	SwitchToFiber(lpThread);
	MessageBox(0,TEXT("切换回主迁程后这里不会执行了"),TEXT("提示"),MB_OK);
	return;
}

你可能感兴趣的:(thread)