纖程的出現是爲了將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()