进程
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、线程状态切换