首先认识进程。操作系统将应用程序的每个正在执行的实例视为一个进程,每个进程有自己独立的系统资源,如内存和CPU 处理时间。现在的Windows 都支持多个进程同时运行。进程与线程之间有什么关系呢?关系就是,无论何时启动一个进程,在它内部就会创建一个线程,开始执行应用程序。简单来说,线程是进程内部的一个执行路径,可以定义为可执行代码的最小单位。另外,一个线程本身不能请求任何资源,它利用分配给进程的资源,而线程是这个进程的一部分。一个应用程序的每一个实例都会启动一个进程,而每一个进程至少跟一个线程相关联。这样,一个应用程序总会有一个相关的线程,这个线程称为这个应用程序的主线程。主线程包含应用程序的启动代码,以及main 函数或WinMain 函数的地址。当应用程序启动时,操作系统首先执行应用程序的主线程。
大多数进程用优先级NORMAL_PRIORITY_CLASS 来开始其生命期。然而,进程一旦启动后,便可以通过调用::SetPriorityClass 函数来改变优先级。::SetPriorityClass 函数接受一个进程句柄(该句柄可以用::GetCurrentProcess 函数来获得),还接受表4.1.1 中显示的一个指定项。若想把当前进程设置为实时优先级,则可使用以下代码:
::SetPriorityClass(::GetCurrentThread(),THREAD_PRIORITY_LOWEST);
表4.1.1 进程相对优先级(www.daowen.com)
大多数应用程序不需要改变其优先级。REALTIME_PRIORITY_CLASS 和 HIGH_ PRIORITY_CLASS 会严重抑制系统的响应性,甚至会延迟关键性活动,如硬盘高速缓存的刷新(本应该以高优先级执行)。HIGH_PRIORITY_CLASS 主要用在系统应用中,这些应用程序大部分时间保持在隐藏状态,但是在某个输入事件发生时,则会弹出一个窗口。这些应用程序在阻塞着等待输入时的系统开销很小,但是一旦出现了输入,则比普通应用程序具有更高的优先级。REALTIME_PRIORITY_CLASS 主要是供实时数据获取程序使用,这些程序必须及时分享CPU时间,以便正常地发挥作用。IDLE_PRIORITY_CLASS 适用于屏幕保护程序、系统监视和其他后台操作的低优先级应用程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。