建立乙個簡單的執行緒

2021-06-28 01:51:27 字數 2575 閱讀 6780

handle createthread(

_in_opt_ lpsecurity_attributes lpthreadattributes,

//security_attributes

結構指定了這個執行緒的安全屬性,如果填

null

則就以預設的安全描述子建立,並且返回的控制代碼不會被繼承。

_in_size_t dwstacksize,

//

執行緒的堆疊大小

(單位是位元組

),如果為

0則預設和主線程一樣大。堆疊再程序的記憶體空間內自動分配並在程序結束時釋放。如有必要堆疊大小可以增加。

//createthread

在試圖分配大小為

dwatacksize

位元組數的記憶體,並在可用記憶體不足時返回失敗訊息。

_in_lpthread_start_routine lpstartaddress,

//

指向執行緒所需要執行的應用程式提供的函式,同時這也代表執行緒開始的位址。函式接受乙個

32位的引數並返回乙個

32位值

_in_opt_ __drv_aliasesmem lpvoid lpparameter,

//

指定乙個傳遞給執行緒的

32位引數值

_in_dword dwcreationflags,

//

指定乙個附加標誌來控制線程的建立。如果

create_suspended

標誌被定義,執行緒就以掛起狀態建立,即直到

resumethread()

函式被呼叫之前都不執行

//

如果該值為

0,執行緒在建立後立即開始執行

_out_opt_ lpdword lpthreadid

//

指向乙個儲存執行緒的id,

32位變數

)

如果執行成功,其返回值是指向下乙個新執行緒的控制代碼。如果失敗,將返回

null

當執行完乙個執行緒後,應該關閉該執行緒的控制代碼。

closehandle(),

該函式使用

createthread()

返回點控制代碼,並將對應核心物件的引用計數器加減1。

這並不是強制關閉乙個執行緒,而是告訴系統改執行緒處於結束時執行狀態。

bool closehandle( _in_ handle hobject )成功返回true,否者false

測試**1當執行緒迴圈的次數小於主線程次數時

#include #include using namespace std;

dword winapi print_thread(lpvoid data)

{cout<<"開始執行緒\n";

for(int index=0;index<25; index++)//迴圈25次

{cout<<"thread_"<<(int)data<<"_"<#include using namespace std

dword winapi print_thread(lpvoid data)

{cout<<"開始執行緒\n";

for(int index=0; index<50;index++)//迴圈50次

{cout<<"thread_"<<(int)data<<"_"<

只看看**1可能沒有什麼特別的發現,所以我寫了**2與其進行對比。細心的讀者會發現我只是改了主線程和子執行緒for迴圈的次數。

對比兩個**你會發現,當主線程結束時,子執行緒還在繼續,由於我加了system("pause");所以第乙個主線程的for迴圈結束後,程式沒有直接退出,然而我們才能看到子執行緒還在繼續跑直到結束才停止。如果你將system(

"pause");你會發現,當主線程執行完後程式直接退出,不會等待子執行緒結束。

如何建立乙個簡單的執行緒

在symbian中,用rthread來操作執行緒,乙個rthread物件代表乙個執行緒的控制代碼。常用rthead物件來建立或操作其他執行緒。rthread的基類是rhandlebase類,該類封裝了控制代碼的行為。rthread,rprocess,rmutex和rsession base都繼承自r...

乙個簡單的多執行緒

頭部 type tmythread class tthread protected procedure execute override end procedure tmythread.execute begin coinitialize nil 如果不加這句,會提示未呼叫coinitialize ...

c 乙個簡單的執行緒

c 本身並沒有提供任何多執行緒機制,但是在windows下,我們可以呼叫sdk win32 api來編寫多執行緒的程式 msdn中createthread原型 1 2 3 4 5 6 7 8 handlecreatethread lpsecurity attributeslpthreadattrib...