一 學習目的怎樣建立乙個多執行緒
二 軟體vs2008 win32控制台程式
三 注意事項 win32 sdk #include #include ,creatthread()函式應用
注意:此專案為c++個人學習所用,如有錯誤請批評指正;
cpp標頭檔案:#include #include
int g_ivalue =0;//多執行緒安全問題
有關建立執行緒的問題有三種方法:
1.c語言函式,呼叫_beginthread();
2.api函式,呼叫createthread();
3.mfc函式,呼叫afxbeginthread();
推薦使用mfc函式afxbeginthread();
利用mfc裡的afxbeginthread函式能很方便地建立執行緒以及對執行緒進行等待、喚醒等操作。
1、函式原型
cwinthread* afxbeginthread( afx_threadproc pfnthreadproc , lpvoid pparam , int npriority = thread_priority_normal , uint nstacksize = 0 , dword dwcreateflags = 0, lpsecurity_attributes lpsecurityattrs = null);
2、引數說明
(1)返回值:乙個指向新執行緒的執行緒物件。
(2)pfnthreadproc:執行緒的入口函式,宣告一定要如下:uint mythreadfunction( lpvoid pparam );
(3)pparam:傳遞入執行緒的引數,注意它的型別為:lpvoid,所以我們可以傳遞乙個結構體入執行緒。
(4)npriority:執行緒的優先順序,一般設定為 0。讓它和主線程具有共同的優先順序。
(5)nstacksize:指定新建立的執行緒的棧的大小。如果為 0,新建立的執行緒具有和主線程一樣的大小的棧。
(6)dwcreateflags:指定建立執行緒以後,執行緒有怎麼樣的標誌。可以指定兩個值:
<1>create_suspended:執行緒建立以後,會處於掛起狀態,直到呼叫resumethread;
<2>0:建立執行緒後就開始執行。
(7)lpsecurityattrs:指向乙個 security_attributes 的結構體,用它來標誌新建立執行緒的安全性。如果為 null,那麼新建立的執行緒就具有和主線程一樣的安全性。
3、執行緒建立
一般建立過程如下:
先定義乙個工作函式,一般來說你的執行緒就是依照該函式的功能執行任務:
uint mythreadfunction( lpvoid pparam )
然後可以按以下方式建立執行緒:
cwinthread* mythread=afxbeginthread(mythreadfunction , pparam , thread_priority_normal , 0 , 0 , null);
4、執行緒的等待與喚醒
(1)讓執行緒等待(暫時掛起):
mythread->suspendthread();
(2)喚醒暫停的執行緒:
mythread->resumethread();
5、檢視執行緒狀態:
dword code;
getexitcodethread(mythread->m_hthread , &code);
if(code==still_active)
else
6、結束執行緒
terminatethread(mythread->m_hthread , 0);
多執行緒學習
thread和runnable的區別 單繼承模式thread 而 runnable是介面 start 和run的區別 start是乙個執行緒只能啟動,run可以執行多次,並且run是呼叫當前正在執行的執行緒 wait notify object物件所具有的 sleep setpriority 同步機...
多執行緒學習
用 編輯 的多執行緒時用gcc threadtest 1.c 編譯時 一直報錯,報錯如下 tmp ccgko5iu.o 在函式 thread create 中 threadtest 1.c text 0x13b 對 pthread create 未定義的引用 threadtest 1.c text ...
多執行緒學習
簡單學習多執行緒。建立多執行緒有兩種方法。一 繼承thread類。多執行緒練習,通過繼承thread public class testthread extends thread public static void main string argsd 二 實現runnable介面。多執行緒練習。通...