WIN32多執行緒

2021-07-30 23:10:28 字數 2597 閱讀 5551

win32多執行緒學習

1.執行緒建立

handle createthread(lpsecurity_attributes lpthreadattributes,

dword dwstacksize,

lpthread_start_routine lpstartaddress,

lpvoid lpparameter,

dword dwcreationflags,

lpdword lpthreadid);

該函式在其呼叫程序的程序空間裡建立乙個新的執行緒,並返回已建執行緒的控制代碼,其中各引數說明如下:

lpthreadattributes:指向乙個 security_attributes 結構的指標,該結構決定了執行緒的安全屬性,一般置為 null;

dwstacksize:指定了執行緒的堆疊深度,一般都設定為0;

lpstartaddress:表示新執行緒開始執行時**所在函式的位址,即執行緒的起始位址。一般情況為(lpthread_start_routine)threadfunc,threadfunc是執行緒函式名;

lpparameter:指定了執行緒執行時傳送給執行緒的32位引數,即執行緒函式的引數;

dwcreationflags:控制線程建立的附加標誌,可以取兩種值。如果該引數為0,執行緒在被建立後就會立即開始執行;如果該引數為create_suspended,則系統產生執行緒後,該執行緒處於掛起狀態,並不馬上執行,直至函式resumethread被呼叫;

lpthreadid:該引數返回所建立執行緒的id;

如果建立成功則返回執行緒的控制代碼,否則返回null。

2.掛起指定執行緒:

dword suspendthread(handle hthread);

該函式用於掛起指定的執行緒,如果函式執行成功,則執行緒的執行被終止。

3、結束執行緒的掛起狀態:

dword resumethread(handle hthread);

該函式用於結束執行緒的掛起狀態,執行執行緒。

4、執行緒退出(退出自己)

void exitthread(dword dwexitcode);

5、退出其他執行緒

bool terminatethread(handle hthread,dword dwexitcode);

一般情況下,執行緒執行結束之後,執行緒函式正常返回,但是應用程式可以呼叫terminatethread強行終止某一線程的執行。

各引數含義如下:

hthread:將被終結的執行緒的控制代碼;

dwexitcode:用於指定執行緒的退出碼。

注意:使用terminatethread()終止某個執行緒的執行是不安全的,可能會引起系統不穩定;雖然該函式立即終止執行緒的執行,但並不釋放執行緒所占用的資源。因此,一般不建議使用該函式。

6、傳送訊息給執行緒:

bool postthreadmessage(dword idthread,

uint msg,

wparam wparam,

lparam lparam);

該函式將一條訊息放入到指定執行緒的訊息佇列中,並且不等到訊息被該執行緒處理時便返回。

idthread:將接收訊息的執行緒的id;

msg:指定用來傳送的訊息;

wparam:同訊息有關的字引數;

lparam:同訊息有關的長引數;

呼叫該函式時,如果即將接收訊息的執行緒沒有建立訊息迴圈,則該函式執行失敗 7.

注意:(1)

對於多執行緒引用的全域性變數來說,volatile是乙個非常重要的修飾符。

(2)執行緒函式的宣告應在類的外部

8.執行緒的暫時掛起:

dword waitforsingleobject(handle hhandle,dword dwmilliseconds);

hhandle為要監視的物件(一般為同步物件,也可以是執行緒)的控制代碼;

dwmilliseconds為hhandle物件所設定的超時值,單位為毫秒;

當在某一線程中呼叫該函式時,執行緒暫時掛起,系統監視hhandle所指向的物件的狀態。如果在掛起的dwmilliseconds毫秒內,執行緒所等待的物件變為有訊號狀態,則該函式立即返回;如果超時時間已經到達dwmilliseconds毫秒,但hhandle所指向的物件還沒有變成有訊號狀態,函式照樣返回。引數dwmilliseconds有兩個具有特殊意義的值:0和infinite。若為0,則該函式立即返回;若為infinite,則執行緒一直被掛起,

直到hhandle所指向的物件變為有訊號狀態時為止。

Win32建立多執行緒

win32建立多執行緒,貼下 define win32 lean and mean include include include include include include include include include define max threads 3 dword winapi pr...

win32多執行緒程式設計

使用3個執行緒完成6個任務,工作的執行是靠呼叫sleep 來模擬,時間長度是隨機給予的,只要乙個執行緒結束,就會有另乙個執行緒被產生。taskques.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define win32 le...

Win32 多執行緒程式設計

程序和執行緒都是作業系統的概念 程序是應用程式的執行例項 每個程序是由私有的虛擬位址空間 資料和其它各種系統資源組成 程序在執行過程中建立的資源隨著程序的終止而被銷毀 所使用的系統資源在程序終止時被釋放或關閉 執行緒是程序內部的乙個執行單元 系統建立好程序後 實際上就啟動執行了該程序的主執行執行緒 ...