Windowns核心編程 - 纖程

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章