通常,我們寫伺服器處理模型的程式時,有以下幾種模型:
(1)每收到乙個請求,建立乙個新的程序,來處理該請求;
(2)每收到乙個請求,建立乙個新的執行緒,來處理該請求;
(3)每收到乙個請求,放入乙個事件列表,讓主程序通過非阻塞i/o方式來處理請求
分析:第(1)中方法,由於建立新的程序的開銷比較大,所以,會導致伺服器效能比較差,但實現比較簡單。
第(2)種方式,由於要涉及到執行緒的同步,有可能會面臨死鎖等問題。
第(3)種方式,在寫應用程式**時,邏輯比前面兩種都複雜。
綜合考慮各方面因素,一般普遍認為第(3)種方式是大多數網路伺服器採用的方式
在ui程式設計中,常常要對滑鼠點選進行相應,首先如何獲得滑鼠點選呢?
方式一:建立乙個執行緒,該執行緒一直迴圈檢測是否有滑鼠點選,那麼這個方式有以下幾個缺點:
1. cpu資源浪費,可能滑鼠點選的頻率非常小,但是掃瞄線程還是會一直迴圈檢測,這會造成很多的cpu資源浪費;如果掃瞄滑鼠點選的介面是阻塞的呢?
2. 如果是堵塞的,又會出現下面這樣的問題,如果我們不但要掃瞄滑鼠點選,還要掃瞄鍵盤是否按下,由於掃瞄滑鼠時被堵塞了,那麼可能永遠不會去掃瞄鍵盤;
3. 如果乙個迴圈需要掃瞄的裝置非常多,這又會引來響應時間的問題;
所以,該方式是非常不好的。
方式二:就是事件驅動模型
目前大部分的ui程式設計都是事件驅動模型,如很多ui平台都會提供onclick()事件,這個事件就代表滑鼠按下事件。事件驅動模型大體思路如下:
1. 有乙個事件(訊息)佇列;
2. 滑鼠按下時,往這個佇列中增加乙個點選事件(訊息);
3. 有個迴圈,不斷從佇列取出事件,根據不同的事件,呼叫不同的函式,如onclick()、onkeydown()等;
Linux系統程式設計之程序
程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...
Linux系統程式設計之shell script介紹
shell script 程式指令碼化 是乙個可以實現自動管理系統的好工具!它值得開發人員好好學習,基本上,shell script有點像是早期批處理的檔案,即將一些命令彙整起來一次執行,但是shell script擁有更強大的功能,因為它可以編寫不需要經過編譯就能執行的shell script程式...
Linux系統程式設計之檔案程式設計
目錄 一 檔案程式設計 1 linux檔案 2 檔案描述符 file descriptor 3 常用api open write read lseek close 1 open 開啟檔案函式 2 close 關閉檔案 3 write 寫檔案 4 read 讀檔案 5 lseek 游標定位 linux...