1樓:何度千尋
微軟在windows api中提供了建立新的執行緒的函式createthread。
概述:當使用createprocess呼叫時,系統將建立一個程序和一個主執行緒。createthread將在主執行緒的基礎上建立一個新執行緒,大致做如下步驟:
在核心物件中分配一個執行緒標識/控制代碼,可供管理,由createthread返回
把執行緒退出碼置為still_active,把執行緒掛起計數置1
分配context結構
分配兩頁的物理儲存以準備棧,保護頁設定為page_readwrite,第2頁設為page_guard
lpstartaddr和lpvthread值被放在棧頂,使它們成為傳送給startofthread的引數
把context結構的棧指標指向棧頂(第5步)指令指標指向startofthread函式
msdn中createthread原型:
handle createthread(
lpsecurity_attributes lpthreadattributes,
dword dwstacksize,
lpthread_start_routine lpstartaddress,
lpvoid lpparameter,
dword dwcreationflags,
lpdword lpthreadid);
引數說明:
lpthreadattributes:指向security_attributes型態的結構的指標。在windows 98中忽略該引數。
在windows nt中,它被設為null,表示使用預設值。
dwstacksize:執行緒堆疊大小,一般=0,在任何情況下,windows根據需要動態延長堆疊的大小。
lpstartaddress,指向執行緒函式的指標,形式:@函式名,函式名稱沒有限制,但是必須以下列形式宣告:dword winapi threadproc (pvoid pparam) ,格式不正確將無法呼叫成功。
lpparameter:向執行緒函式傳遞的引數,是一個指向結構的指標,不需傳遞引數時,為nil。
dwcreationflags :執行緒標誌,可取值如下
create_suspended: 建立一個掛起的執行緒
0 :建立後立即啟用。
lpthreadid:儲存新執行緒的id。
返回值:
函式成功,返回執行緒控制代碼;函式失敗返回false。
函式說明:
建立一個執行緒。
語法
一般並不推薦使用 createtheard函式,而推薦使用rtl 庫裡的system單元中定義的 begintheard函式,因為這除了能建立一個執行緒和一個入口函式以外,還增加了幾項保護措施。
2樓:解憂書屋
createthread
微軟在windows api中提供了建立新的執行緒的函式createthread,
概述:當使用createprocess呼叫時,系統將建立一個程序和一個主執行緒。createthread將在主執行緒的基礎上建立一個新執行緒,大致做如下步驟:
1在核心物件中分配一個執行緒標識/控制代碼,可供管理,由createthread返回
2把執行緒退出碼置為still_active,把執行緒掛起計數置1
3分配context結構
4分配兩頁的物理儲存以準備棧,保護頁設定為page_readwrite,第2頁設為page_guard
5lpstartaddr和lpvthread值被放在棧頂,使它們成為傳送給startofthread的引數
6把context結構的棧指標指向棧頂(第5步)指令指標指向startofthread函式
msdn中createthread原型:
handle createthread(
lpsecurity_attributes lpthreadattributes,
dword dwstacksize,
lpthread_start_routine lpstartaddress,
lpvoid lpparameter,
dword dwcreationflags,
lpdword lpthreadid);
引數說明:
lpthreadattributes:指向security_attributes型態的結構的指標。在windows 98中忽略該引數。
在windows nt中,它被設為null,表示使用預設值。
dwstacksize,執行緒堆疊大小,一般=0,在任何情況下,windows根據需要動態延長堆疊的大小。
lpstartaddress,指向執行緒函式的指標,形式:@函式名,函式名稱沒有限制,但是必須以下列形式宣告:
dword winapi threadproc (pvoid pparam) ,格式不正確將無法呼叫成功。
lpparameter:向執行緒函式傳遞的引數,是一個指向結構的指標,不需傳遞引數時,為nil。
dwcreationflags :執行緒標誌,可取值如下
create_suspended: 建立一個掛起的執行緒
0 :建立後立即啟用。
lpthreadid:儲存新執行緒的id。
返回值:
函式成功,返回執行緒控制代碼;函式失敗返回false。
函式說明:
建立一個執行緒。
語法
一般並不推薦使用 createtheard函式,而推薦使用rtl 庫裡的system單元中定義的 begintheard函式,因為這除了能建立一個執行緒和一個入口函式以外,還增加了幾項保護措施。
3樓:匿名使用者
c#裡面的thread類不是非常好用嗎,還用這個幹嗎。
如何在windows系統上用c++建立多執行緒
4樓:匿名使用者
waitformultipleobject***(sizeof(hthreads), hthreads, false, infinite, false);
//執行緒資源釋放
closehandle(hthreads[0]);
closehandle(hthreads[1]);
return 0;}
5樓:匿名使用者
dword winapi sumthread(lpvoid lp)//求和線
程return 0;//執行緒返回
}dword winapi multhread(lpvoid lp)//求階乘執行緒
return 0;
}dword winapi printthread(lpvoid lp)//列印執行緒
void main()
c++ 建立執行緒用createthread後,執行緒直接就開始執行了嗎?還是還要再給它一個命令才能執行?
6樓:試圖製造混亂
這要看你createtheread時的引數如何設的,handle createthread(
lpsecurity_attributes lpthreadattributes, // sd
dword dwstacksize, // initial stack size
lpthread_start_routine lpstartaddress, // thread function
lpvoid lpparameter, // thread argument
dword dwcreationflags, // creation option
lpdword lpthreadid // thread identifier
);第五個引數dwcreationflags :執行緒標誌,可取值如下
(1)create_suspended(0x00000004):建立一個掛起的執行緒,需要resumethread喚醒
(2)0:表示建立後立即啟用。
vc++中通過createthread建立的執行緒,當執行緒入口函式執行完後,執行緒自己會關閉嗎?
7樓:匿名使用者
不會自己關閉來的。
正確源的做法是:
// 儲存執行緒
bai控制代碼du
handle hthread = createthread(.....)
// 等待執行緒完成zhi,如果是多執行緒的,需要呼叫waitformultipleobjects
waitforsingleobjects(max_threads,hthread,true,infinite);
// 最後dao關閉控制代碼
closehandle(hthread );
8樓:匿名使用者
執行緒函式結束 執行緒就結束 當然是關閉了; 但是 執行緒控制代碼要手動closehandle的 親
1 1 2怎麼用c語言程式設計,1 1 2怎麼用C語言程式設計
農民工談三農 c程式 內容如下 include main 然後按提示輸入 1 1 就會顯示 a b 2 程式設計完成! 曦月 include main include stdio.h main 獵戶座 int a a 1 1 和同人女一張床 include void main include std...
用C語言如何求解,用C語言如何求解1 2 2 3 3 4 4 5 5 6?
main printf f sum getch 測試過了 好用 寫了一個函式,這樣如果要對不同的數求值,只要改變傳入引數就可以了,include stdio.h double myfun int min,int max return s 例子,求證,可以改變不同數來求證 main include s...
維他命C有啥用 維C有什麼用?
美白,抗氧化,促進新陳代謝。維c有什麼用?服用維生素c有許多好處 第。一 維生素c可以增強人體的免疫力,殺滅多種入侵的細菌,對於身體的損傷有很好的修復作用。第。二 維生素c也稱抗壞血酸,可以抗壞血病。第。三 還能夠美白養顏,對於提高機體的抗病毒能力有一定的好處和療效。但是如果經常吃維生素c,也有一定...