多线程优先级问题
为什么我写的多线程程序,然后给两个线程设置优先级而执行的结果仍旧是乱序的,函数执行没有错误,是不是有什么忽略的地方,最好在我的基础上能给出一个完整大程序。
#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <cmath>
#define MAXLENGTH 20
#define THREAD_NUM 2
using namespace std;
/*冒泡排序方法*/
DWORD WINAPI BubbleSort(int Arr[MAXLENGTH] ){
int len = MAXLENGTH;
for (int i = 0; i < MAXLENGTH; ++i)
{
for (int j = i + 1; j <MAXLENGTH; ++j)
{
if (Arr[i] > Arr[j])
{
int temp;
temp = Arr[i];
Arr[i] = Arr[j];
Arr[j] = temp;
}
}
}
for(int j = 0; j < MAXLENGTH; ++j){
cout<<Arr[j]<<"..."<<endl;
}
cout<<endl;
return 0;
}
/*选择排序方法*/
DWORD WINAPI SelectSort(int Arr[MAXLENGTH]){
int i, j, k, temp;
for (i = 0; i < MAXLENGTH-1; i++)
{
k = i;
for(j = i + 1; j < MAXLENGTH; ++j){
if (Arr[k] > Arr[j])
{
k = j;
}
}
if (k != i)
{
temp = Arr[i];
Arr[i] = Arr[k];
Arr[k] = temp;
}
}
for(int m = 0; m < MAXLENGTH; ++m){
cout<<Arr[m]<<"......."<<endl;
}
cout<<endl;
return 0;
}
/*显示数组*/
void DisplayArray(int Arr[MAXLENGTH]){
for(int i = 0; i < MAXLENGTH; ++i){
cout<<Arr[i]<<", ";
}
cout<<endl;
}
/*设置随机数的范围*/
int random(int start,int end){
return start + (end - start) * rand() / (RAND_MAX + 1);
}
/*给数组随机赋值*/
void arrayValue(int Arr[]){
for(int i = 0; i< MAXLENGTH; i++){
Arr[i] = random(0,50);
}
}
int main(){
int Arr[MAXLENGTH];
arrayValue(Arr);
HANDLE hTread1;
HANDLE hTread2;
DWORD threadId1;
DWORD threadId2;
hTread1=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)BubbleSort, (LPVOID)Arr, 0,&threadId1);//创建线程1
SetThreadPriority(hTread1, THREAD_PRIORITY_NORMAL);
hTread2=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SelectSort, (LPVOID)Arr, 0,&threadId2);//创建线程2;
SetThreadPriority(hTread2, THREAD_PRIORITY_ABOVE_NORMAL);
DWORD exitcode1 = STILL_ACTIVE ;
DWORD exitcode2 = STILL_ACTIVE ;
while( exitcode1 == STILL_ACTIVE || exitcode2 == STILL_ACTIVE )
{
GetExitCodeThread(hTread1, &exitcode1); //DWORD 指针类型,第二个参数返回线程的退出码
GetExitCodeThread(hTread2, &exitcode2);
}
return 0;
}