Win32學習(第十一天)程序與執行緒初探

2021-09-18 01:36:14 字數 2000 閱讀 8826

程序 通常被定義為乙個正在執行的程式例項。

執行緒 執行緒是程序的一部分,執行緒總是在某個程序的環境中被建立,它是程序的某乙個執行序列(像函式)。

在這裡可以做乙個比喻,如果把程序比喻成我們過去的地主的話,那麼執行緒就相當於那個時代的長工。因為地主是非常懶的所以程序的活動性不強,如果想要通過乙個程序完成某個操作,它必須有乙個在它環境中執行的執行緒。如果需要完成多步操作,盡量通過多執行緒進行完成,這樣可以盡可能節省足夠多的資源。

程序的組成:作業系統用來管理程序的核心物件,位址空間(所有的可執行模組,像dll模組,所有需要的資料)

執行緒的組成:作業系統對執行緒管理實施的核心物件:執行緒堆疊。

要講執行緒和程序還要先引入乙個量程的概念,量程是作業系統為每乙個執行緒安排了一定的cpu時間,它通過一種迴圈的方式為執行緒提供時間片。

下面是在win32的視窗函式中建立乙個程序的**:

lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)

break;

//程序的結束方法:

//1、主線程的入口函式返回(建議最好使用這種)

//2、在父程序的某個執行緒出呼叫terminateprocess去結束乙個子程序

//3、在當前程序的某個位置呼叫exitprocess去結束這個子程序

case wm_rbuttondown:

terminateprocess(g_hinst, 0);

break;

case wm_command:

wmid = loword(wparam);

wmevent = hiword(wparam);

// 分析選單選擇:

switch (wmid)

break;

case wm_paint:

hdc = beginpaint(hwnd, &ps);

// todo: 在此新增任意繪圖**...

endpaint(hwnd, &ps);

break;

case wm_destroy:

postquitmessage(0);

break;

default:

return defwindowproc(hwnd, message, wparam, lparam);

} return 0;

}

下面再說執行緒:

執行緒是由兩部分組成

1、作業系統核心 用來存放執行緒的統計資訊。

2、執行緒堆疊 用來維護執行緒**過程中所需要的 的所有函式的引數和區域性變數。

執行緒總是在程序中被建立的,執行緒的生命週期會受到程序的影響:

1、程序一旦被建立,系統必然會同時給出乙個主線程

2、程序一旦死亡,這個程序裡面的所有執行緒都會死亡

3、執行緒需要的資源比程序要少,程序有不活躍,如果需要非同步解決問題因盡量建立執行緒,避免建立程序。

下面是一段使用對話方塊建立的執行緒**:

#include

#include

int myadd(int a, int b)

int piao = 10;//票數

void aaa(lpvoid v)}}

int _tmain(int argc, _tchar* ar**)

else

break;

}//執行緒的三種退出:

//1、執行緒函式的主動返回(建議)

//2、在某個執行緒裡面去呼叫terminatethread結束某個指定的子執行緒

//3、在某個執行緒裡面呼叫exitthread結束當前執行緒

terminatethread(handle1, 0);

terminatethread(handle2, 0);

terminatethread(handle3, 0);

terminatethread(handle4, 0);

getchar();

return 0;

}

Linux學習第十一天

一 昨日回顧 1 訊號處理sigaction 2 使用sigaction如何實現不斷重入效果?struct sigaction act act.sa flags sa siginfo sa nodefer 3 想在2號訊號的處理流程過程中,遮蔽3號訊號 struct sigaction act ac...

C 學習筆記(第十一天)

1 概念 父類,基類 class person 子類 派生類 student 繼承person屬性和方法,擴充套件一些自己屬性和函式 studentnum,studentname.employee 繼承person屬性和方法 teacher 繼承person屬性和方法 圖形類shape 求周長 求面...

Oracle學習筆記第十一天

這活按我猜想應該是dba的活,沒有往這方面發展的想法,所以筆記做得簡單點了 概念 備份 備份就是把資料庫複製到轉儲裝置的過程 恢復恢復就是把資料庫由存在故障的狀態轉變為無故障狀態的過程 語法 用exp命令匯出資料 exp username password parameter value 用imp命...