當使用者按下系統選單中的close命令項,系統送出wm_close。通常程式的視窗函式不攔截次訊息,於是defwindowproc函式處理它。defwindowproc收到wm_close後,呼叫destorywindow把視窗清除。destroywindow本身又會送出wm_destroy。程式對wm_destroy的標準反應是呼叫postquitmessage。postquitmessage沒什麼其它動作,就只送出wm_quit訊息,準備讓訊息迴圈退出。
所謂空閒時間(idle time),是指【系統中沒有任何訊息等待處理】的時間。舉個例子,沒有任何程式使用定時器(timer,它會定時送來wm_timer),使用者也沒有碰觸鍵盤和滑鼠或任何外圍裝置,那麼,系統就處在所謂的空閒時間。
空閒時間常常發生。不要認為你移動滑鼠時產生了一大堆的wm_mousemove,事實上夾雜在每乙個wm_mousemove之間就可能存在許多空閒時間。畢竟,計算機速度超乎想象。
後台工作最適宜在空閒時間完成。傳統的sdk程式如果要處理空閒時間,可以以下列迴圈取代winmain中傳統的訊息迴圈:
1while
(true)
29 translatemessage(&msg);
10 dispatchmessage(&msg);11}
12else
1316 }
原因是peekmessage和getmessage的不同,getmessage是阻塞的,而peekmessage是非阻塞的。
console程式是指在windows下開發的不實用ui的控制台程式
dos程式是指在dos系統下開發的程式
讓我們看看整個流程:
2、系統產生乙個【程序核心物件】,計數值為1。
3、系統為此程序建立乙個4gb的位址空間。
5、系統為此程序建立乙個執行執行緒,稱為主執行執行緒(primary thread)。執行執行緒才是cpu時間的分配物件。
6、系統呼叫c runtime函式庫的startup code。
10、回到startup code。
11、回到系統,系統呼叫exitprocess結束程序。
可以說,透過這種方式執行起來的所有程式都是shell的子程序。本來,父程序與子程序之間可以有某些關係存在,但shell在呼叫createprocess時已經把這種關係剪斷,因此它們是獨立的例項。
深入淺出DPDK 第一章
用軟體的方式在通用多核處理器上,演繹著資料報處理的新篇章 1 硬體加速器 2 網路處理器 3 多核處理器 dpdk主要是以ia intel architecture 多核處理器為目標平台 問題1 cpu核數增多,然後核心驅動的收發包處理和使用者態執行緒,依舊由作業系統排程執行,這個會造成什麼新的問題...
第一章 深入淺出Web請求過程(筆記)
當使用者在瀏覽器裡輸入url後,首先會請求dns把這個網域名稱解析成對應ip位址,然後根據ip位址在網上找到對應伺服器,向這個伺服器發起乙個get請求,由這個伺服器決定返回預設的資料資源給訪問的使用者。在伺服器端實際上還有很複雜的業務邏輯 伺服器可能有多台,到底只用哪台伺服器來處理請求,還需要乙個負...
深入淺出MFC筆記
深入淺出mfc筆記 一 勿在浮砂築高台 1 並不是擴充套件名為 dll dynamic link library 的才是動態鏈結庫。事實上,exe dll fon mod drv 和.ocx 都是所謂的動態鏈結函式庫。2 windows 程式編譯時需要包含 windows.h 標頭檔案,若需要使用諸...