一、乙個程序的生命週期1,
shell
呼叫createprocess啟動
2,系統產生乙個進行核心物件(包括,
semaphore
,file,,
process
,thread)3
,系統為程序建立乙個位址空間
4,裝載**、檔案指標、
dll到程序位址空間
5,系統為程序建立乙個主線程
6,系統呼叫
starup code 7
,starup code
呼叫程式的
winmain函式8
,程式開始執行,開始訊息迴圈…
9,user
關閉主視窗,
winmain
的訊息迴圈結束,
winmain
函式結束返回
10,回到
starup code 11
,回到系統,系統呼叫
exitprocess
結束程序
由此可見,所以的
windows
程式都是
shell
的子程序。
二、windows
執行緒的生命週期
程式的功能通過執行緒來完成,程序產生時,主線程隨之產生,每個
windows
程式一開始就有乙個
thread
,也可以
createthread
生成其他的
thread
,系統會做:
1,配置
thread
物件,其
handle
是createthread
的返回值;
2,設定計數器
3,培訓
thread
的context 4,
保留tread
的堆疊5,
設定好context
中堆疊的ss和
ip thread
才是cpu
分配時間的基本單位,
context switch
也是對thread
的context
切換。三、
thread
的終結前兩天在看過一些資料,恰好這邊又有一些說明。
終結的兩種方式:
1 壽終正寢,在
thread
函式結束前使用
exitthread
做一些善後清理工作,不顯式呼叫也是這一樣的效果。
2 未得善終,強制使用
terminatethread
,終結者,少用,
api上有清楚的說明。
四、使用
_beginthreadex
代替createthread
封裝,並做一下記錄工作。
090916(星期三) MFC訊息路由1
一 命令路由 command routing 1 增加乙個函式列表 類與訊息迴圈相關的函式 注意none afxwndproc global none afxcallwndproc global ccmdtarget oncmdmsg virtual cdocument oncmdmsg virtu...
2016 6 1 星期三 晴
前兩天聚會完那兩天,寫了一篇日誌發給盧老師。他說他很少關注別人的字型,但是我的字型卻很特別,說我的字這麼多年了也沒有變變。如果乙個同學記得你的字型,也是一件很開心的事情,更何況是每年要面對很多學生的老師,二十年過去了,一切依然是那麼如昨般深刻和親切。在我的心裡,他早就如親人般了。今天俊琦做了乙個騰雲...
2021 01 20 星期三 工作總結
工作 1 上午測試給前端的車輛任務發布介面和車輛狀態查詢介面。2 下午測試車端車輛任務狀態上報介面。發現乙個問題,netty啟動不起來,查了半下午沒頭緒,最後找了啟君,他說看了好久說是可能是handller裡不能直接注入cicv system中寫的service,注入的 ivehicletaskst...