纤程的出现是为了将UNIX应用程序移植到Windows,纤程是在用户模式下实现的,所以内核无法对纤程进行调度,只能根据定义的算法对纤程进行调度。一个线程可以包含一个或多个纤程,内核会对线程进行调度,但线程一次只能执行一个纤程的代码。下面是一些纤程的相关函数及用法。
1)使用纤程的第一个步骤是将一个已有的线程转换为一个纤程,使用函数 :PVOID ConvertThreadToFiber(PVOID pvParam); 如果 纤程需要执行浮点运算的,需要调度函数 : PVIOD ConvertThreadToFiber(PVOID pvParam, DWORD dwFlag),否则会导致数据被破坏.
2)创建一个纤程,函数:PVOID CreateFiber( DWORD dwStackSize , PFIBER_START_ROUTINE pfnStartAddress, PVOID pvParam);
3)上述2)函数的pfnStartAddress是指定纤程函数的地址, 实现纤程函数原型: VOID WINAPI FiberFunc(PVOID pvParam);
4)在一个线程中,同一时刻只能执行一个纤程,为了让新的纤程执行,可调用函数 :VOID SwitchToFiber(PVOID pvFiberExecutionContext);
5)销毁纤程函数 :VOID DeleteFiber(PVOID pvFiberExecutionContext);
6)获取正在运行纤程的执行上下文函数 : PVOID GetCurrentFiber();或者: PVOID GetFiberData()