win32 提供了一系列的api函式來完成執行緒的建立、掛起、恢復、終結以及通訊等工作。下面將選取其中的一些重要函式進行說明。
1、handle createthread(lpsecurity_attributes lpthreadattributes,該函式在其呼叫程序的程序空間裡建立乙個新的執行緒,並返回已建執行緒的控制代碼,其中各引數說明如下:dword dwstacksize,
lpthread_start_routine lpstartaddress,
lpvoid lpparameter,
dword dwcreationflags,
lpdword lpthreadid);
如果建立成功則返回執行緒的控制代碼,否則返回null。
2、dword suspendthread(handle hthread);該函式用於掛起指定的執行緒,如果函式執行成功,則執行緒的執行被終止。
3、dword resumethread(handle hthread);該函式用於結束執行緒的掛起狀態,執行執行緒。
4、void exitthread(dword dwexitcode);5、bool terminatethread(handle hthread,dword dwexitcode);一般情況下,執行緒執行結束之後,執行緒函式正常返回,但是應用程式可以呼叫terminatethread強行終止某一線程的執行。各引數含義如下:
使用terminatethread()終止某個執行緒的執行是不安全的,可能會引起系統不穩定;雖然該函式立即終止執行緒的執行,但並不釋放執行緒所占用的資源。因此,一般不建議使用該函式。
6、bool postthreadmessage(dword idthread,該函式將一條訊息放入到指定執行緒的訊息佇列中,並且不等到訊息被該執行緒處理時便返回。uint msg,
wparam wparam,
lparam lparam);
呼叫該函式時,如果即將接收訊息的執行緒沒有建立訊息迴圈,則該函式執行失敗。
以下例子來自於msdn
#include #include #include #define max_threads 3
#define buf_size 255
typedef struct mydata mydata, *pmydata;
dword winapi mythread( lpvoid lpparam )
int _tmain()
{ pmydata pdata;
dword dwthreadid[max_threads];
handle hthread[max_threads];
int i;
// create max_threads worker threads.
for( i=0; ival1 = i;
pdata->val2 = i+100;
hthread[i] = createthread(
null, // default security attributes
0, // use default stack size
mythread, // thread function
pdata, // argument to thread function
0, // use default creation flags
&dwthreadid[i]); // returns the thread identifier
// check the return value for success.
// if failure, close existing thread handles,
// free memory allocation, and exit.
if (hthread[i] == null)
{for(i=0; i
Win32 API 多執行緒程式設計例程一
例程1 multithread1 建立乙個基於對話方塊的工程multithread1,在對話方塊idd multithread1 dialog中加入兩個按鈕和乙個編輯框,兩個按鈕的id分別是idc start,idc stop 標題分別為 啟動 停止 idc stop的屬性選中disabled 編輯...
Win32 API 多執行緒程式設計例程二
例程2 multithread2 該執行緒演示了如何傳送乙個乙個整型的引數到乙個執行緒中,以及如何等待乙個執行緒完成處理。建立乙個基於對話方塊的工程multithread2,在對話方塊idd multithread2 dialog中加入乙個編輯框和乙個按鈕,id分別是idc count,idc st...
win32 API實現多執行緒小例程
1.api函式 2.程式設計例項 void threadfunc 執行緒函式 static bool m brun 全域性變數 對話方塊類內 handle hthread 執行緒函式的控制代碼 dword threadid 執行緒函式的id 原始檔 類外新增 執行緒函式 void threadfun...