线程优先级

来源:互联网 发布:吾玛牛奶怎么样知乎 编辑:程序博客网 时间:2024/05/17 03:51

priority其实是指分配资源的时候占多大优势。
并不是说A线程的优先级比B的高,A走完了才会轮上B。假设有100个线程在4CPU的机器上跑,大家轮流运行,只是优先级高的,分配到的时间片段更多一些。


// C++Test.cpp : 定义控制台应用程序的入口点。

//


#include "stdafx.h"
#include <math.h>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;


DWORD WINAPI ThreadProcIdle(LPVOID lpParameter)  
{  
    for (int i=0;i<20;i++)  
    {  
        printf("I'm in thread IDLE...\n");  
    }  
    return 0;  
}  
  
DWORD WINAPI ThreadProcNormal(LPVOID lpParameter)  
{  
    for (int i=0;i<20;i++)  
    {  
        printf("I'm in thread Normal...\n");  
    }  
    return 0;  
}  


int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwThreadIdIdle;  
    DWORD dwThreadIdNormal;  
    HANDLE hThread[2];  
    //开启两个线程  
    hThread[0] = ::CreateThread(NULL,0, ThreadProcIdle, NULL, CREATE_SUSPENDED, &dwThreadIdIdle);  
    ::SetThreadPriority(hThread[0],THREAD_PRIORITY_IDLE);  
    ::ResumeThread(hThread[0]);  
  
    hThread[1] = ::CreateThread(NULL,0, ThreadProcNormal, NULL, CREATE_SUSPENDED, &dwThreadIdNormal);  
    ::SetThreadPriority(hThread[1],THREAD_PRIORITY_NORMAL);  
    ::ResumeThread(hThread[1]);
  
    //等待两个线程结束  
    ::WaitForMultipleObjects(2,hThread,TRUE,INFINITE);  
    ::CloseHandle(hThread[0]);  
    ::CloseHandle(hThread[1]);


system("pause");
return 0;
}
1 0