成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++多線程代碼范例剖析

開發 后端
在這篇文章中,我們通過在主線程中創建兩個線程的方法來為大家詳細解讀C++多線程的具體應用方法,以方便大家將來的實際應用。

C++編程語言中支持多線程運行。那么如何才能正確的實現這一功能呢?今天我們就在這里先通過一個帶來范例來詳細解讀C++多線程的應用方式,希望初學者們可以根據我們介紹的內容從中學到一些知識。

C++多線程應用示例:

主線程創建2個線程t1和t2,創建時2個線程就被掛起,后來調用ResumeThread恢復2個線程,是其開始執行,調用WaitForSingleObject等待2個線程執行完,然后推出主線程即結束進程。

  1. #include <stdio.h> 
  2. #include <string> // for STL string class  
  3. #include <windows.h> // for HANDLE  
  4. #include <process.h> // for _beginthread()  
  5. using namespace std;  
  6. class ThreadX  
  7. {  
  8. private:  
  9. int loopStart;  
  10. int loopEnd;  
  11. int dispFrequency;  
  12. public:  
  13. string threadName;  
  14. ThreadX( int startValue, int endValue, int frequency )  
  15. {  
  16. loopStart = startValue;  
  17. loopEnd = endValue;  
  18. dispFrequency = frequency;  
  19. }  
  20. static unsigned __stdcall ThreadStaticEntryPoint(void * pThis)  
  21. {  
  22. ThreadX * pthX = (ThreadX*)pThis; // the tricky cast  
  23. pthX->ThreadEntryPoint(); // now call the true entry-point-function
  24. return 1; // the thread exit code  
  25. }  
  26. void ThreadEntryPoint()  
  27. {  
  28. for (int i = loopStart; i <= loopEnd; ++i)  
  29. {  
  30. if (i % dispFrequency == 0)  
  31. {  
  32. printf( "%s: i = %d\n", threadName.c_str(), i );  
  33. }  
  34. }  
  35. printf( "%s thread terminating\n", threadName.c_str() );  
  36. }  
  37. };  
  38. int main()  
  39. {  
  40. ThreadX * o1 = new ThreadX( 0, 1, 2000 );  
  41. HANDLE hth1;  
  42. unsigned uiThread1ID;  
  43. hth1 = (HANDLE)_beginthreadex( NULL, // security  
  44. 0, // stack size  
  45. ThreadX::ThreadStaticEntryPoint,  
  46. o1, // arg list  
  47. CREATE_SUSPENDED, // so we can later call ResumeThread()  
  48. &uiThread1ID );  
  49. if ( hth1 == 0 )  
  50. printf("Failed to create thread 1\n");  
  51. DWORD dwExitCode;  
  52. GetExitCodeThread( hth1, &dwExitCode ); // should be STILL_ACTIVE = 0x00000103 = 259  
  53. printf( "initial thread 1 exit code = %u\n", dwExitCode );  
  54. o1->threadName = "t1";  
  55. ThreadX * o2 = new ThreadX( -1000000, 0, 2000 );  
  56. HANDLE hth2;  
  57. unsigned uiThread2ID;  
  58. hth2 = (HANDLE)_beginthreadex( NULL, // security  
  59. 0, // stack size  
  60. ThreadX::ThreadStaticEntryPoint,  
  61. o2, // arg list  
  62. CREATE_SUSPENDED, // so we can later call ResumeThread()  
  63. &uiThread2ID );  
  64. if ( hth2 == 0 )  
  65. printf("Failed to create thread 2\n");  
  66. GetExitCodeThread( hth2, &dwExitCode ); // should be STILL_ACTIVE = 0x00000103 = 259  
  67. printf( "initial thread 2 exit code = %u\n", dwExitCode );  
  68. o2->threadName = "t2";  
  69. ResumeThread( hth1 ); // serves the purpose of Jaeschke's t1->Start()  
  70. ResumeThread( hth2 );  
  71. WaitForSingleObject( hth1, INFINITE );  
  72. WaitForSingleObject( hth2, INFINITE );  
  73. GetExitCodeThread( hth1, &dwExitCode );  
  74. printf( "thread 1 exited with code %u\n", dwExitCode );  
  75. GetExitCodeThread( hth2, &dwExitCode );  
  76. printf( "thread 2 exited with code %u\n", dwExitCode );  
  77. CloseHandle( hth1 );  
  78. CloseHandle( hth2 );  
  79. delete o1;  
  80. o1 = NULL;  
  81. delete o2;  
  82. o2 = NULL;  
  83. printf("Primary thread terminating.\n");  
  84. }

以上就是對C++多線程的相關介紹。

【編輯推薦】

  1. C++獲得系統時間不同方案介紹
  2. C++靜態成員函數基本概念講解
  3. C++靜態數據成員定義及應用淺談
  4. C++指針重載應用代碼解讀
  5. C++模板函數重載不同之處點評
責任編輯:曹凱 來源: 博客園
相關推薦

2012-05-18 10:36:20

CC++編程

2011-07-21 11:12:58

iPhone 線程 多線程

2023-08-01 16:35:48

鴻蒙ArkUI應用開發

2023-08-02 09:29:40

任務池TaskPool

2010-02-03 10:05:48

C++ enum枚舉

2010-01-18 14:09:58

C++多線程

2010-02-05 15:30:54

C++多線程測試

2021-02-25 15:58:46

C++線程編程開發技術

2010-02-01 14:26:50

C++讀寫文本文件

2021-03-05 07:38:52

C++線程編程開發技術

2010-02-04 13:45:36

C++類模板

2024-06-24 08:10:00

C++互斥鎖

2010-01-14 17:42:47

CC++

2010-02-03 10:17:29

C++繼承方式

2015-04-17 10:35:51

c++c++程序內存泄漏檢測代碼

2024-11-05 16:29:57

2010-01-28 16:31:54

C++類型

2023-12-14 15:05:08

volatile代碼C++

2010-01-12 15:03:33

C++代碼

2024-06-24 12:57:09

多線程C++編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产无人区一区二区三区 | 草草视频在线播放 | 亚洲欧美日韩精品久久亚洲区 | 久久精品国产一区二区电影 | 精品国产乱码久久久久久蜜退臀 | 久久久久久久一区二区三区 | 91社区在线观看高清 | 在线看黄免费 | 91精品中文字幕一区二区三区 | 一区中文| 欧美精品在线免费观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 99视频在线免费观看 | 日本三级做a全过程在线观看 | 天堂久久久久久久 | 欧美日韩一区二区三区四区 | 91国内外精品自在线播放 | 欧美日韩亚洲一区 | 青青久久av北条麻妃海外网 | 91国内外精品自在线播放 | 精品国产一区二区三区性色av | 国产精品久久久久久网站 | 久久尤物免费一区二区三区 | 久久综合久久综合久久 | 一级毛片在线播放 | 蜜桃视频麻豆 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 日韩精品在线观看一区二区三区 | 国产精品久久二区 | 中文字幕亚洲视频 | 九一国产精品 | 成人在线免费 | 成人国产一区二区三区精品麻豆 | 亚洲a视频| 天天人人精品 | 中国大陆高清aⅴ毛片 | 免费国产一区 | 综合久久综合久久 | 午夜大片 | 91久久视频 | 久久久久国产精品人 |