在窗口的创建过程中
AfxBeginThread(ThreadProc1, NULL, THREAD_PRIORITY_TIME_CRITICAL);
UINT ThreadProc1(LPVOID pParam)
{
    while(1)
    {
    }
}
会有什么结果?
如果我再开一个呢?
AfxBeginThread(ThreadProc2, NULL, THREAD_PRIORITY_TIME_CRITICAL);
UINT ThreadProc2(LPVOID pParam)
{
   for (;;)
   {
   }
}
各位, 有兴趣的可以试验一下?

解决方案 »

  1.   

    THREAD_PRIORITY_TIME_CRITICAL优先级是相当高的,应该是高于任务管理器的。
      

  2.   

    加Sleep(),不然cpu100%,呵呵。
      

  3.   

    下面情形又会如何呢:AfxBeginThread(ThreadProc1, NULL, THREAD_PRIORITY_TIME_CRITICAL);
    UINT ThreadProc1(LPVOID pParam)
    {
      UINT nCount = 0;
        while(1)
        {
            Sleep(1000);
            cout<<"from Thread 1:"<<nCount++<<endl;
        }
    } AfxBeginThread(ThreadProc2, NULL, THREAD_PRIORITY_TIME_CRITICAL);
    UINT ThreadProc2(LPVOID pParam)
    {
      UINT nCount = 0;
        while(1)
        {
            Sleep(1000);
            cout<<"from Thread 2:"<<nCount++<<endl;
        }
    } ......AfxBeginThread(ThreadProc1000, NULL, THREAD_PRIORITY_TIME_CRITICAL);
    UINT ThreadProc1000(LPVOID pParam)
    {
      UINT nCount = 0;
        while(1)
        {
            Sleep(1000);
            cout<<"from Thread 1000:"<<nCount++<<endl;
        }
    } 也就是说开启1000个这样的线程,事实证明,这1000个线程执行的时间是不相同的,也就是有些线程执行较多,有些则很少,如何使它们的执行机会均等呢?