windows C C 執行緒建立

2021-09-23 03:41:02 字數 2390 閱讀 6153

建立執行緒				

handle createthread(

lpsecurity_attributes lpthreadattributes, // 安全屬性 通常為null

size_t dwstacksize, // 引數用於設定執行緒可以將多少位址空間用於它自己的堆疊

// 每個執行緒擁有它自己的堆疊

lpthread_start_routine lpstartaddress, // 引數用於指明想要新執行緒執行的執行緒函式的位址

lpvoid lpparameter, // 執行緒函式的引數

// 既可以是數字,也可以是指向包含其他資訊的乙個資料結構的指標

dword dwcreationflags, // 0 建立完畢立即排程 create_suspended建立後掛起

lpdword lpthreadid // 執行緒id

);

// 返回值:執行緒控制代碼

執行緒控制代碼與執行緒id:

執行緒是由windows核心負責建立與管理的,控制代碼相當於乙個令牌,有了這個令牌就可以使用執行緒物件.

執行緒id是身份證,唯一的,系統進行執行緒排程的時候要使用的.

建立執行緒**:

//建立乙個新的執行緒

handle hthread = ::createthread(null, 0, threadproc,

null, 0, null);

//如果不在其他的地方引用它 關閉控制代碼

::closehandle(hthread);

執行緒函式:

dword winapi threadproc(

lpvoid lpparameter // thread data

) 向執行緒函式傳遞變數的兩種方式:

(1) 全域性變數

(2) 執行緒引數

掛起執行緒:

::suspendthread(hthread);

恢復執行緒:

::resumethread(hthread); 同步呼叫 非同步呼叫

終止執行緒: //

方式一: ::terminatethread(hthread,3);

::waitforsingleobject(hthread,infinite);

::exitthread(dword dwexitcode);

//執行功能

方式二:

執行緒函式返回

//

方式三:

::terminatethread(hthread,2);

::waitforsingleobject(hthread,infinite);

判斷執行緒是否結束

bool getexitcodethread(

handle hthread,

lpdword lpexitcode

);

still_active 正在執行

引數:

hthread: 要結束的執行緒控制代碼

dwexitcode: 指定執行緒的退出**。可以通過getexitcodethread來檢視乙個執行緒的退出**

執行緒上下文

typedef struct _context context;

獲取執行緒context結構:

//掛起執行緒

suspendthread(執行緒控制代碼);

context context

//設定要獲取的型別

context.contextflags = context_control;

//獲取

bool ok = ::getthreadcontext(hthread,&context);

//設定

context.eip = 0x401000;

setthreadcontext(hthread,&context);

Windows C C 語言選單基本程式設計

使用cfree 5.0 來看一下win32 選單基本程式設計 新建乙個視窗工程 生成的檔案如下 乙個基本視窗程式 main.c中包含winmain和視窗過程函式 h是標頭檔案 rc是資源檔案 main.c包含resource.h 程式執行起來,有視窗,有選單,這些是自己生成的 下面來新增乙個選單項,...

windows C C 實現ini檔案讀寫

ini格式稍微來說比較簡單為 tiatle 欄位1 內容 欄位2 內容 內容為純數字時,可以使用整形 int 方式讀取,如果是字串則需使用字串 string 讀取,部分 需要用到windows api 所以需加上windows.h標頭檔案 1 獲取程式路徑 獲取程式路徑 char char int ...

執行緒 建立執行緒

重寫run public void run 例項化物件 類名 t new 類名 設定屬性 名字,優先順序 優先順序是1 10的整數,1最小,預設是5 優先順序越高,該執行緒占用cpu的時間 機會 越多。id是自動生成 t.setname 執行緒1 t.setpriority 4 啟動執行緒,預設呼叫...