對於執行緒,對於新手來說會覺得非常麻煩,實際上不是如此,其實很簡單,只是要注意執行緒的關閉和開啟。簡單的方法建立執行緒達到效果。
第一種方式:----mfc封裝好呼叫執行緒方式
對於執行緒,對於新手來說會覺得非常麻煩,實際上不是如此,其實很簡單,只是要注意執行緒的關閉和開啟。簡單的方法建立執行緒達到效果。
#include "commonitorthread.h" // 引用執行緒
在按鈕的程式中新增
m_pmaindlg = (csignallampsettooldlg*)::afxgetmainwnd();
::afxbeginthread(clientthread,this); //獲得執行緒程式clientthread() 設定此程式為執行緒程式,執行緒中一直執行此函式。
uint ccommonitorthread::clientthread(lpvoid lparam)// lparam 為執行緒控制代碼。
第二種方式---非mfc封裝呼叫執行緒。
createthread
函式原型:
[cpp]view plain
copy
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
);
此函式在其呼叫程序的程序空間裡建立乙個執行緒。
引數說明:
lpthreadattributes:指向security_attributes結構體,該結構體決定了函式返回控制代碼是否被子進執行緒繼承。
如果為null,則不能被繼承。
dwstacksize:指定了執行緒的堆疊大小,一般為0,使用預設的堆疊大小。
lpstartaddress:指向應用定義的執行緒函式,執行緒函式型別為lpthread_start_routine。此值代表執行緒的開始位址。
lpparameter:執行緒函式所帶的引數。是乙個指向結構的指標,不需傳遞引數時,為null。
dwcreateflags:執行緒標誌。如果指定為create_suspended,執行緒建立的時候的狀態為掛起狀態,
執行緒不會立即執行直到呼叫resumethread函式。
如果值為0,執行緒會立即執行。
lpthreadid:儲存新執行緒的id.
舉例:hthread = createthread(
null, // sd
0, // initial stack size
(lpthread_start_routine)threadproc, // thread function
null, // thread argument
0, // creation option
&threadid // thread identifier
);
其中threadproc 為執行緒程式,你所需要執行的程式放在threadproc中就可以了。
C 執行緒學習筆記
執行緒等待 這個例子的目的是向控制台順序地輸出數字,從1到500.first 方法將會輸出前250個數字而second 方法將會輸出後250個。如果不在second 方法中加firstthread.join 的話,執行上下文將會在兩個方法之間來回切換,而我們的輸出會很亂 試著將這行 注釋掉,然後重新...
C 執行緒同步 (學習筆記)
1.利用mutex 互斥物件 2.利用event 事件物件 3.利用臨界區 critical section 效率更高 4.利用semaphore訊號量 filename semaphore test.cpp author jarvischu date 2012 11 22 include incl...
C 多執行緒學習筆記
一 基本概念 bi d.z9k l b 0 程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。q7 j ka ik z b0 執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 ...