進程
1、進程是程序的一次動態執行實例。有創建、執行、結束完整的生命週期。
2、進程消耗的系統資源只有它所佔用的內存。
3、winCE最多隻支持32個進程同時運行。每個進程佔用32MB的虛擬地址空間。也被稱爲一個s1ot 。
4、WinCE不支持環境變量,也不支持當前目錄。--------------WinCE先查找” \Windows“目錄,然後查找根目錄。如果找不到就報錯。
----解決方案1:通過GetModuleFileName()獲取當前執行文件所在的目錄。
eg:
5、進程的創建
應用程序可以使用CreateProcess()函數創建一個新的進程。
- Windows目錄 (”\ Windows“)
- 對象存儲的根目錄 (”\ “)
- OEM所制定的搜索目錄 ( 註冊表的中
參數pProcInfo指向一個PROCESS_INFORMATION結構體,PROCESS_INFORMATION結構體返回進程和主線程的句柄以及ID。不需要得到時,可以設置爲空。
6、進程終止方法:
最佳方法-------從WinMain()函數返回。
ExitThread()讓進程的主線程退出從而終止進程。
ExitProcess()和TerminateProcess()函數用來使進程終止。
線程
1、線程是Windows CE中最小的可執行單元。一個進程可以擁有的線程數理論上是沒有限制的。
進程中所有的線程共享進程所佔有的資源,包括地址空間、打開的文件等內核對象。
2、線程可以運行核心態或用戶態。
操作系統線程和中斷服務例程(ISR,Interrupt Service Routine)運行在覈心態,
應用程序和設備驅動程序的中斷服務線程(IST,Interrupt Service Thread)運行在用戶態。
WinCE允許讓所有的線程都運行在覈心態下,從而增加系統的效率。
3、線程的創建
創建成功,返回新創建線程的句柄。否則,返回NULL。
可以把參數fdwCreate設置成CREATE_SUSPENDED狀態來創建一個起始狀態爲掛起的線程。否則線程創建結束後會立即執行。
4、恢復線程。ResumeThread
5、結束線程。
ExitThread()和TerminateThread()函數使線程結束執行。
調度
1、WinCE是搶佔式多任務操作系統。調度程序基於優先級的時間片算法對線程進行調度。
線程優先級通過GetThreadPriority()函數獲取,SetThreadPriority()函數設置。
BOOL SetThreadPriority( HANDLE hThread, int nPriority );其中,nPriority值爲
默認時間片100毫秒。通過CeGetThreadQuantum()函數獲得。
DWORD CeGetThreadQuantum( HANDLE hThread );失敗時,返回MAXDWORD 。
2、線程狀態切換