Windows核心編程:第12章 纖程

來源:互聯網
上載者:User

標籤:rcu   dshow   index   系統調用   adt   lin   rto   ada   cpp   

Github

https://github.com/gongluck/Windows-Core-Program.git

//第12章 纖程.cpp: 定義應用程式的進入點。//#include "stdafx.h"#include "第12章 纖程.h"LPVOID g_Covert = nullptr;DWORD g_index = 0;VOID WINAPI FiberFun(LPVOID lpFiberParameter){    //纖程參數    LPVOID pFiberCurrent = GetCurrentFiber();    BOOL bres = IsThreadAFiber();    LPVOID pCurrentData = GetFiberData();//擷取建立纖程時傳遞的參數,pCurrentData==lpFiberParameter==555    //纖程局部儲存區    bres = FlsSetValue(g_index, (PVOID)200);    PVOID flsvalue = FlsGetValue(g_index);    SwitchToFiber(g_Covert);}VOID NTAPI FlsFun(IN PVOID lpFlsData){    //FlsSetValue多少次,系統調用FlsFun就多少次    //可以主動調用FlsFree刪除Fls槽    //纖程銷毀時也會調用FlsFun}int APIENTRY wWinMain(_In_ HINSTANCE hInstance,    _In_opt_ HINSTANCE hPrevInstance,    _In_ LPWSTR    lpCmdLine,    _In_ int       nCmdShow){    //將線程轉換為纖程    LPVOID pFiberCovert = ConvertThreadToFiberEx(nullptr, FIBER_FLAG_FLOAT_SWITCH);    g_Covert = pFiberCovert;    //纖程局部儲存區    g_index = FlsAlloc(FlsFun);    BOOL bres = FlsSetValue(g_index, (PVOID)100);    PVOID flsvalue = FlsGetValue(g_index);    //建立纖程    LPVOID pFiberCreate = CreateFiberEx(0, 0, FIBER_FLAG_FLOAT_SWITCH, FiberFun, (LPVOID)555);    //切換纖程    SwitchToFiber(pFiberCreate);    bres = FlsFree(g_index);        //銷毀纖程    DeleteFiber(pFiberCreate);    //解除線程的纖程狀態    bres = ConvertFiberToThread();    system("pause");    return 0;}

Windows核心編程:第12章 纖程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.