1. 程式人生 > >Windows 下 C/C++ 多線程編程入門參考範例

Windows 下 C/C++ 多線程編程入門參考範例

tail emc repr com std using tle rom amp

[c-sharp] view plaincopy
  1. #include <windows.h>
  2. #include <iostream>
  3. using namespace std;
  4. DWORD WINAPI myThread(LPVOID argv);//聲明一個線程函數
  5. int main(int argc, char *argv[])
  6. {
  7. string s;
  8. HANDLE myHandle;
  9. do{
  10. cin.clear(); cin.sync();
  11. cin>> s;
  12. switch(s.at(0)){
  13. case ‘0‘:
  14. myHandle = CreateThread(NULL,0,myThread,(LPVOID)s.c_str(),0,NULL);//創建線程
  15. break;
  16. case ‘1‘:
  17. if(myHandle) SuspendThread(myHandle);//掛起線程
  18. break;
  19. case ‘2‘:
  20. if(myHandle) ResumeThread(myHandle);//恢復線程
  21. break;
  22. case ‘3‘:
  23. if(myHandle) TerminateThread(myHandle,0);//終止線程
  24. break;
  25. case ‘4‘:
  26. if(myHandle) SetThreadPriority(myHandle,THREAD_PRIORITY_NORMAL);//設定線程優先級
  27. break;
  28. default:
  29. break;
  30. }
  31. cout<< s << endl;
  32. }while(s!="exit" && s!= "quit");
  33. return 0;
  34. }
  35. DWORD WINAPI myThread(LPVOID argv){
  36. int i = 0;
  37. char buff[200];
  38. ZeroMemory(buff,sizeof(buff));
  39. memcpy(buff,argv,200);
  40. while(++i){
  41. cout<< "Extra thread executing with argument string:"<< buff <<endl;
  42. Sleep(1000);
  43. if(i == 40) ExitThread(0);//退出自身線程
  44. }
  45. }

Windows 下 C/C++ 多線程編程入門參考範例