多執行緒程式設計win32 API

2021-06-04 16:14:49 字數 2019 閱讀 8650

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...