窗户多线程开发之并发线程程序研究

  


# include “stdafx.h”,   # include  & lt; iostream>   # include  & lt; Windows.h>   # include  & lt; Winternl.h>   # include  & lt; tchar.h>   # include  & lt; winbase.h>   using  namespace 性传播疾病;      # define  THREADS_NUMBER  2   # define  ELEMENTS_NUMBER  200年   # define  BLOCK_SIZE  ELEMENTS_NUMBER /, THREADS_NUMBER    # define  MAX_VALUE  1000年      typedef  struct  _tagARRAYOBJECT    {   int *, iArray;   int  iSize;   int  iThreadID,   },ARRAYOBJECT,, * PARRAYOBJECT;      DWORD  WINAPI  ThreadStart (lpParameter, LPVOID );   void  PrintArray (int *大敌;iArray,, int  iSize);   void  MergeArrays (int *, leftArray,, int  leftArrayLenght,, int *, rightArray,, int  rightArrayLenght,, int *, mergedArray);   命令行参数个数,int  _tmain (int  _TCHAR *, argv [])   {   int  iArray1 [BLOCK_SIZE];   int  iArray2 [BLOCK_SIZE];   int  iArray [ELEMENTS_NUMBER];      时间=for  (int  iIndex  0;, iIndex  & lt;, BLOCK_SIZE;, iIndex + +)   {   iArray1 [iIndex],=, rand (), %, MAX_VALUE;   iArray2 [iIndex],=, rand (), %, MAX_VALUE;   }   HANDLE  hThreads [THREADS_NUMBER];      ARRAYOBJECT  pObject1 =, {,, (iArray1 [0]),, BLOCK_SIZE,, 0,};   hThreads [0],=, CreateThread (NULL,, 0,, (LPTHREAD_START_ROUTINE) ThreadStart(值),,pObject1,, 0,, NULL),,      ARRAYOBJECT  pObject2 =, {,, (iArray2 [0]),, BLOCK_SIZE,, 1,};   hThreads [1],=, CreateThread (NULL,, 0,, (LPTHREAD_START_ROUTINE) ThreadStart,(值),,pObject2,, 0,, NULL); cout<& lt;“Waiting 执行…”,& lt; & lt;, endl;      WaitForMultipleObjects (THREADS_NUMBER, hThreads,,真的,,无限的),,   MergeArrays(和iArray1 [0],, BLOCK_SIZE,,, iArray2 [0],, BLOCK_SIZE,,, iArray [0]);   PrintArray (iArray, ELEMENTS_NUMBER);   CloseHandle (hThreads [0]);   CloseHandle (hThreads [1]);   cout<& lt;,“Array 排序…”,& lt; & lt;, endl;      获取字符();   return  0;   },   DWORD  WINAPI  ThreadStart (LPVOID  lpParameter)   {   PARRAYOBJECT  pObject =, (PARRAYOBJECT) lpParameter;   int  iTmp =, 0;   时间=for  (int  iIndex  0;, iIndex  & lt;, pObject→iSize;, iIndex + +)   {   时间=for  (int  iEndIndex  pObject→iSize 作用;1;,iEndIndex 祝辞,iIndex;, iEndIndex——),   {   if  (pObject→iArray [iEndIndex], & lt;, pObject→iArray [iIndex])   {   时间=iTmp  pObject→iArray [iEndIndex];   pObject→iArray [iEndIndex],=, pObject→iArray [iIndex];   pObject→iArray [iIndex],=, iTmp;   }   }   }   return  0;   },   void  PrintArray (int *, iArray,, int  iSize),   {   时间=for  (int  iIndex  0;, iIndex  & lt;, iSize;, iIndex + +),   {   cout  & lt; & lt;,“,”, & lt; & lt;, iArray [iIndex];   }   cout  & lt; & lt;, endl;,   }   void  MergeArrays (int *, leftArray,, int  leftArrayLenght,, int *,, rightArray,, int  rightArrayLenght,, int *, mergedArray)   {   int 小姐:=,0;   int  j =, 0;   int  k =, 0;   while (小姐:& lt;, leftArrayLenght ,,, j  & lt;, rightArrayLenght)   {   if  (leftArray[我],& lt;, rightArray [j])   {   mergedArray [k],=, leftArray[我];   我+ +;   }   其他的   {   mergedArray [k],=, rightArray [j];   + +;   }   k + +;   }   if (小姐:祝辞=,leftArrayLenght)   {   while  (j  & lt;, rightArrayLenght)   {   mergedArray [k],=, rightArray [j];   + +;   k + +;   }   }   if  (j 祝辞=,rightArrayLenght)   {   while (小姐:& lt;, leftArrayLenght)   {   mergedArray [k],=, leftArray[我];   我+ +;   k + +;   }   }   }

运行结果:

癢indows多线程开发之并发线程程序研究"


癢indows多线程开发之并发线程程序研究"

癢indows多线程开发之并发线程程序研究"

窗户多线程开发之并发线程程序研究