fork download
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #include <time.h>
  5. #include <windows.h>
  6. #include <process.h>
  7. #include <stdio.h>
  8. #pragma hdrstop
  9.  
  10. //---------------------------------------------------------------------------
  11.  
  12. #pragma argsused
  13. int call = 0;
  14. int loop = 10000000;
  15. clock_t start;
  16. void Func(int num)
  17. {
  18. clock_t t = clock();
  19. printf("第%d次呼叫(開始)\t距離主程式開始經過:%lf\n",num,(double)(clock()-start)/CLOCKS_PER_SEC);
  20. double sum = 0;
  21. for(int i = 0 ; i < loop ; i++)
  22. {
  23. sum += (double)(rand()%10000)/10000.0;
  24. }
  25. printf("第%d次呼叫(結束)\t線程:%4d\t總和:%lf\t耗時:%lf\n",num, GetCurrentThreadId(),sum,(double)(clock()-t)/CLOCKS_PER_SEC);
  26. }
  27. unsigned int __stdcall ThreadFun(PVOID pM)
  28. {
  29. call++;
  30. Func(call);
  31. return 0;
  32. }
  33. int main(int argc, char* argv[])
  34. {
  35. start = clock();
  36. const int THREAD_NUM = 9;
  37. HANDLE handle[THREAD_NUM];
  38. for (int i = 0; i < THREAD_NUM; i++)
  39. handle[i] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, NULL, 0, NULL);
  40. WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);
  41. printf("使用線程的總時間:%lf\n",(double)(clock()-start)/CLOCKS_PER_SEC);
  42. start = clock();
  43. for (int i = 0; i < THREAD_NUM; i++)
  44. Func(i+1);
  45. printf("不使用線程的總時間:%lf\n",(double)(clock()-start)/CLOCKS_PER_SEC);
  46. system("PAUSE");
  47. return 0;
  48. }
  49. //---------------------------------------------------------------------------
  50. /**********************************************
  51. 第1次呼叫(開始) 距離主程式開始經過:0.000000
  52. 第2次呼叫(開始) 距離主程式開始經過:0.000000
  53. 第3次呼叫(開始) 距離主程式開始經過:0.000000
  54. 第4次呼叫(開始) 距離主程式開始經過:0.000000
  55. 第5次呼叫(開始) 距離主程式開始經過:0.000000
  56. 第6次呼叫(開始) 距離主程式開始經過:0.016000
  57. 第7次呼叫(開始) 距離主程式開始經過:0.016000
  58. 第1次呼叫(結束) 線程:3480 總和:4694505.719100 耗時:0.438000
  59. 第8次呼叫(開始) 距離主程式開始經過:0.438000
  60. 第9次呼叫(開始) 距離主程式開始經過:0.438000
  61. 第4次呼叫(結束) 線程:3872 總和:4694505.719100 耗時:0.438000
  62. 第2次呼叫(結束) 線程:2844 總和:4694505.719100 耗時:0.438000
  63. 第3次呼叫(結束) 線程:2284 總和:4694505.719100 耗時:0.469000
  64. 第8次呼叫(結束) 線程:3724 總和:4694505.719100 耗時:0.453000
  65. 第9次呼叫(結束) 線程: 448 總和:4694505.719100 耗時:0.469000
  66. 第5次呼叫(結束) 線程:3472 總和:4694505.719100 耗時:0.907000
  67. 第7次呼叫(結束) 線程:3520 總和:4694505.719100 耗時:1.063000
  68. 第6次呼叫(結束) 線程:2828 總和:4694505.719100 耗時:1.063000
  69. 使用線程的總時間:1.079000
  70. 第1次呼叫(開始) 距離主程式開始經過:0.000000
  71. 第1次呼叫(結束) 線程:3892 總和:4694505.878300 耗時:0.406000
  72. 第2次呼叫(開始) 距離主程式開始經過:0.406000
  73. 第2次呼叫(結束) 線程:3892 總和:4692883.718700 耗時:0.422000
  74. 第3次呼叫(開始) 距離主程式開始經過:0.828000
  75. 第3次呼叫(結束) 線程:3892 總和:4692659.285499 耗時:0.406000
  76. 第4次呼叫(開始) 距離主程式開始經過:1.234000
  77. 第4次呼叫(結束) 線程:3892 總和:4694980.998601 耗時:0.422000
  78. 第5次呼叫(開始) 距離主程式開始經過:1.656000
  79. 第5次呼叫(結束) 線程:3892 總和:4692678.469100 耗時:0.406000
  80. 第6次呼叫(開始) 距離主程式開始經過:2.062000
  81. 第6次呼叫(結束) 線程:3892 總和:4693822.504300 耗時:0.422000
  82. 第7次呼叫(開始) 距離主程式開始經過:2.484000
  83. 第7次呼叫(結束) 線程:3892 總和:4694019.845800 耗時:0.406000
  84. 第8次呼叫(開始) 距離主程式開始經過:2.890000
  85. 第8次呼叫(結束) 線程:3892 總和:4693829.995600 耗時:0.422000
  86. 第9次呼叫(開始) 距離主程式開始經過:3.312000
  87. 第9次呼叫(結束) 線程:3892 總和:4694418.062700 耗時:0.406000
  88. 不使用線程的總時間:3.718000
  89. 請按任意鍵繼續 . . .
  90. **********************************************/
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:3:17: fatal error: vcl.h: No such file or directory
compilation terminated.
stdout
Standard output is empty