to 有福之人:
是指在cpu空闲时启动线程吗?

解决方案 »

  1.   

    qige2001老兄能否详细点说明这个多线程如何工作?
      

  2.   

    进程的优先级类:
    优先级类 标识符 描述
    实时 REALTIME_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。会抢先于操作系统组件之前运行。
    高 HIGH_PRIORITY_CLASS 立即对事件作出响应,执行关键时间的任务。
    高于正常 ABOVE_NORMAL_PRIORITY_CLASS 在正常优先级与高优先级之间运行(Windows2000)。
    正常 NORMAL_PRIORITY_CLASS 没有特殊调度需求
    低于正常 BELOW_NORMAL_PRIORITY_CLASS 在正常优先级与空闲优先级之间运行(Windows2000)。
    空闲 IDLE_PRIORITY_CLASS 在系统空闲时运行。
    设置方法:
    BOOL SetPriorityClass( HANDLE hProcess, DWORD dwPriority );
    DWORD GetPriorityClass( HANDLE hProcess );
    使用命令外壳启动一个程序时,该程序的起始优先级是正常优先级。如果使用Start命令来启动该程序,可以使用一个开关来设定应用程序的起始优先级。例如:
    c:\>START /LOW CALC.EXE
    Start命令还能识别/BELOWNORMAL、/NORMAL、/ABOVENORMAL、/HIGH和/REALTIME等开关。
    线程的相对优先级:
    相对优先级 标识符 描述
    关键时间 THREAD_PRIORITY_TIME_CRITICAL 对于实时优先级类线程在优先级31上运行,对于其他优先级类,线程在优先级15上运行。
    最高 THREAD_PRIORITY_HIGHEST 线程在高于正常优先级上两级上运行。
    高于正常 THREAD_PRIORITY_ABOVE_NORMAL 线程在正常优先级上一级上运行。
    正常 THREAD_PRIORITY_NORMAL 线程在进程的优先级类上正常运行。
    低于正常 THREAD_PRIORITY_BELOW_NORMAL 线程在低于正常优先级下一级上运行。
    最低 THREAD_PRIORITY_LOWEST 线程在低于正常优先级下两级上运行。
    空闲 THREAD_PRIORITY_IDLE 对于实时优先级类线程在优先级16上运行对于其他优先级类线程在优先级1上运行。
    设置方法:
    BOOL SetThreadPriority( HANDLE hThread, DWORD dwPriority );
    DWORD GetThreadPriorityClass( HANDLE hThread );
      

  3.   

    下面一段代码仅供参考!int CHYGDMApp::Run() 

    // TODO: Add your specialized code here and/or call the base class 
    //return CWinApp::Run(); 

    HACCEL hAccel;  hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); 
    MSG msg; 
    while(1)

    if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))

    if(GetMessage(&msg,NULL,0,0)==FALSE)

    ExitInstance(); 
    return msg.wParam ; 

    //if(!TranslateAccelerator(hWnd,hAccel,&msg))

    //处理加速键 
    // TranslateMessage(&msg); 
    // DispatchMessage(&msg); 
    // 

    }
    else

    WaitMessage(); 
    //可以不用 WaitMessage,而执行自己的操作。
    //或者在App的OnIdle()里执行自己的操作。
    //这只是利用CPU的空闲时间,对其它应用程序没有影响。 


    return TRUE; 
      

  4.   

    当cpu有空的时候windows会发一个onidle的消息。在你的app里把它响应一下就可以了。如果你想后台运行的话,我还是劝你开一个优先级小一些的线程,这样你至少还能终止它。
      

  5.   

    在OnIdle()中执行大量的运算工作,显然是不明智的。因为它将一直占用CPU直到运算工作结束。应该采用低优先级的工作线程的做法。
      

  6.   

    OnIdle()的优先级已经很低了吧。
      

  7.   

    OnIdle() 空闲的时候有用
    优先级低是因为是在空闲的时候比较有用
    以前有一个类似的软件
    好像是美国什么地方发的,利用家用电脑计算分析什么信号,再通过上网的时候发回给什么什么航天局,好像是叫在家里寻找外星人的计划,以后就没有消息了。呵呵
      

  8.   

    这个计划叫seti@home,我还一直在参与呢!
    大家有兴趣的话可以到网上去看看 setiathome.berkeley.edu
      

  9.   

    最好不要在OnIdle()中运行大的运算,
    否则,你的系统鼠标都不会响应
      

  10.   

    程序中要定义类和对象,并且要使用类和对象!!! 因为程序的目的就是为了展现面向对象的特点和优点!!!
    假定: 对一家公司的员工进行管理:
    包括人员名字,出生日期,加入公司的年份,那个部门(用ring0---ring9表示10个部门) ,工资标准等(多多不限)
    要求有对(假如有员工改名, 可以实现改名, 尽管使用中不常见, 但主要是为了实现面向对象思想)(更改工资标准)(开除员工和增加员工)(通过工龄即加入公司的时间来对员工进行排序, 同一年的可随便排)(通过部门的对员工排序, 个部门的集中在一起显示,譬如ring0的排了下了跟着就是全是ring1部门的)
    请兄弟们快点回帖, 把源代码和程序发给我, 搞定后就给200分!!!
    这是我期末考试的题目, 兄弟们要快快快!!
     我的email :  [email protected]