• mfc 线程的优先级


    知识点:
        线程优先级
        获取当前线程句柄
        线程优先级设置
        线程优先级变动
        线程优先级获取
           
    一、线程优先级(Thread priority )
    
        简单的说就是(线程)的优先级越高,那么就可以分占相对多的CPU时间片。   每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。最终的优先级共分32级,是从 031 的数值,称为基本优先级别。
               
    
    
    进程优先级 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
     
    一个线程创建的时候,会继承进程的优先级等级。另外线程优先级可以用SetThreadPriority来进行微调:
        微调范围
    
        线程优先级等级    标志    优先级值
    1    idle      (最低)    THREAD_PRIORITY_IDLE    如果进程优先级为realtime则调整为16,其它情况为1
    2    LOWEST  低    THREAD_PRIORITY_LOWEST    -2(在原有基础上-23    BELOW   低于标准    THREAD_PRIORITY_BELOW_NORMAL    -1(在原有基础上-14    NORMAL(标准)    THREAD_PRIORITY_NORMAL    不变(取进程优先级值)
    5    ABOVE    高于标准    THREAD_PRIORITY_ABOVE_NORMAL    +1(在原有基础上+16    HIGHEST (高)    THREAD_PRIORITY_HIGHEST    +2(在原有基础上+27    CRITICAL(最高)    THREAD_PRIORITY_TIME_CRITICAL    如果进程优先级为realtime则调整为31,其它情况为15
    
      
    二、获取当前线程句柄
    HANDLE GetCurrentThread(VOID)
    //返回当前进句柄
    DWORD GetCurrentThreadId(VOID)
    //返回当前进程ID值
       1、其它线程函数
    BOOL SetThreadPriority 设置一个线程的优先级别
    int GetThreadPriority    返回一个线程的 优先级别  
    SetThreadPriorityBoost    设置线程是否禁用动态调整优先级功能。
    GetThreadPriorityBoost    获取线程是否禁用了优先级微调功能。
    
    三、线程优先级的设置
     BOOL SetThreadPriority
    (
     
     HANDLE hThread,// 线程句柄   handle to the thread
      
     int nPriority      // 要设置线程优先级别thread priority level
    
    );
    
    
    void CDialog_PROCESS::OnBnClickedRadio7()
    {
        // TODO: 在此添加控件通知处理程序代码
        BOOL r=0;
        UpdateData(true);
        switch (m_radio_thread_selNum)
        {
        case 0:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE); //设置为 最低
            TRACE("thread=%d,%04x  set priority to THREAD_PRIORITY_IDLE 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 1:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST);//设置为 较低
            TRACE("thread=%d,%04x  set priority to THREAD_PRIORITY_LOWEST 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 2:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL); //设置为 低于标准
            TRACE("thread=%d,%04X  set priority to THREAD_PRIORITY_BELOW_NORMAL 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 3:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL);  //设置为 标准
            TRACE("thread=%d,%04X  set priority to THREAD_PRIORITY_NORMAL 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 4:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL);  //设置为 高于标准
            TRACE("thread=%d,%04X  set priority to THREAD_PRIORITY_ABOVE_NORMAL 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 5:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);  //设置为 较高
            TRACE("thread=%d,%04X  set priority to THREAD_PRIORITY_HIGHEST 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        case 6:
            r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);  //设置为 最高
            TRACE("thread=%d,%04X  set priority to THREAD_PRIORITY_TIME_CRITICAL 
    ",GetCurrentThreadId(),GetCurrentThreadId());
            break;
        default:
            break;
    
        }    
    }
  • 相关阅读:
    15.scrapy中selenium的应用
    14.UA池和代理池
    17.基于scrapy-redis两种形式的分布式爬虫
    08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS
    05.Python网络爬虫之三种数据解析方式
    06.Python网络爬虫之requests模块(2)
    04.Python网络爬虫之requests模块(1)
    16.Python网络爬虫之Scrapy框架(CrawlSpider)
    10.scrapy框架简介和基础应用
    Python网络爬虫第三弹《爬取get请求的页面数据》
  • 原文地址:https://www.cnblogs.com/whzym111/p/6232340.html
Copyright © 2020-2023  润新知