zoukankan      html  css  js  c++  java
  • mfc 进程的优先级

    知识点:
        进程优先级
        获取当前进程句柄
        优先级设置
        优先级变动
        优先级获取
           
    一、进程优先级(优先级等级)
    
        简单的说就是进程(线程)的优先级越高,那么就可以分占相对多的CPU时间片。   每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。最终的优先级共分32级,是从 031 的数值,称为基本优先级别。
    
      (priority class)优先级等级,这里我叫它进程优先级。因为一般来说它是在调用CreateProcess时指定的,CreateProcess中dwCreationFlags就可以指定进程的优先级。而线程创建时会继承进程的优先等级。
        因为线程才是CPU时间分配的最小单位,所以部分书上也叫线程优先等级。
     
    
    
    进程优先级 priority class    标志    优先级值
    idle     (低)    IDLE_PRIORITY_CLASS    4
    Below     低于标准    BELOW_NORMAL_PRIORITY_CLASS    此值在2000以下系统不支持
    normal  (标准)    NORMAL_PRIORITY_CLASS    9(前台) 或 7(后台)
    Above     高于标准    ABOVE_NORMAL_PRIORITY_CLASS    此值在2000以下系统不支持
    high      (高)    HIGH_PRIORITY_CLASS    13
    realtime (实时)    REALTIME_PRIORITY_CLASS    24
    #define NORMAL_PRIORITY_CLASS             0x00000020
    #define IDLE_PRIORITY_CLASS                 0x00000040
    #define HIGH_PRIORITY_CLASS                 0x00000080
    #define REALTIME_PRIORITY_CLASS            0x00000100    
    
    //2000及XP以上版本支持以下 优先级等级
    #define BELOW_NORMAL_PRIORITY_CLASS       0x00004000
    #define ABOVE_NORMAL_PRIORITY_CLASS       0x00008000
      
    二、获取当前进程句柄
        GetCurrentProcess
    三、进程优先级的设置
        CreateProcess    创建进程时 也可以设置 进程优先级
    SetPriorityClass  设置进程优先级
    GetPriorityClass   获取进程优先级
    SetProcessPriorityBoost  设置  激活或停用进程优先级提高功能
    GetProcessPriorityBoost   获取 是否 激活进程优先级提高功能
    
      void CDialog_PROCESS::OnBnClickedRadio1()
    {
        SetPriorityClass(GetCurrentProcess(),IDLE_PRIORITY_CLASS);
    }
    
    void CDialog_PROCESS::OnBnClickedRadio2()
    {
        SetPriorityClass(GetCurrentProcess(),BELOW_NORMAL_PRIORITY_CLASS);
    }
    
    void CDialog_PROCESS::OnBnClickedRadio3()
    {
        SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
    }
    
    void CDialog_PROCESS::OnBnClickedRadio4()
    {
        SetPriorityClass(GetCurrentProcess(),ABOVE_NORMAL_PRIORITY_CLASS);
    }
    
    void CDialog_PROCESS::OnBnClickedRadio5()
    {
            SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS);
    }
    
    void CDialog_PROCESS::OnBnClickedRadio6()
    {
            SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
    }
  • 相关阅读:
    Oracle 备份与恢复介绍
    Oracle 监听器
    ORA-01041: 内部错误,hostdef 扩展名不存在
    NIO读写文件并加锁
    ActiveMQ消息生产消费流程
    金额,有效值等保留小数位处理
    JVM
    Linux架构分布式集群之基础篇
    Vue.js 开发实践:实现精巧的无限加载与分页功能
    Mysql 查看连接数,状态
  • 原文地址:https://www.cnblogs.com/whzym111/p/6232213.html
Copyright © 2011-2022 走看看