Advertisement
Savelyev_Vyacheslav

ANZH_Tread

May 15th, 2021
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. // TheadsAhzh.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. // ThreadsAnzh.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  5. //
  6.  
  7. #define _CRT_SECURE_NO_WARNINGS
  8. #include <windows.h>
  9. #include <iostream>
  10. #include <thread>
  11. #include <ctime>
  12. #include <cstdlib>
  13. #include <stdio.h>
  14. #include <string.h>
  15. using namespace std;
  16.  
  17.  
  18.  
  19.  
  20.  
  21. void sortQuick(int* mas, int fir1, int tail)
  22. {
  23. int mid, count;
  24. int t = fir1, end = tail;
  25. mid = mas[(t + end) / 2];
  26. do
  27. {
  28. while (mas[t] < mid) t++;
  29. while (mas[end] > mid) end--;
  30. if (t <= end)
  31. {
  32. count = mas[t];
  33. mas[t] = mas[end];
  34. mas[end] = count;
  35. t++;
  36. end--;
  37. }
  38. } while (t < end);
  39. if (fir1 < end) sortQuick(mas, fir1, end);
  40. if (t < tail) sortQuick(mas, t, tail);
  41. }
  42.  
  43. int* makeARR(int* arr, int ArrElements) {
  44. int k = 0;
  45. while (k < ArrElements) {
  46. arr[k] = (rand() % 10000) + 1;
  47. k = k + 1;
  48. }
  49. return arr;
  50. }
  51.  
  52. void printMASSIV(int* arr3, int n) {
  53. int i = 0;
  54. while (i < n) {
  55. cout << "i" << i << " " << arr3[i] << endl;
  56. i = i + 1;
  57. }
  58.  
  59. }
  60. int* argThead[2];
  61. DWORD WINAPI ThreadPrint(LPVOID lpParam) {
  62. cout << "ThreadPrint" << endl;
  63. printMASSIV(argThead[0], *argThead[1]);
  64. cout << "ThreadPrint stop" << endl;
  65. return 0;
  66. }
  67. void Thread_Print(int* argThead, int Npriority) {
  68.  
  69. HANDLE hThread_mass_print;
  70. DWORD ThreadIDp;
  71.  
  72. hThread_mass_print = CreateThread(
  73. NULL,
  74. 0,
  75. ThreadPrint,
  76. argThead
  77. ,
  78. CREATE_SUSPENDED,
  79. &ThreadIDp
  80. );
  81.  
  82. if (hThread_mass_print == NULL) {
  83. cout << "Thread failed" << GetLastError() << endl;
  84. }
  85.  
  86. SetThreadPriority(hThread_mass_print, Npriority);
  87. cout << "PriorytetP hThread_mass_print = " << GetThreadPriority(hThread_mass_print) << endl;
  88. cout << "Thread Creation Success" << endl;
  89. ResumeThread(hThread_mass_print);
  90. cout << "ThreadID -->" << ThreadIDp << endl;
  91.  
  92. }
  93.  
  94. DWORD WINAPI ThreadSort(LPVOID lpParam) {
  95. cout << "ThreadSort" << endl;
  96.  
  97. sortQuick(argThead[0], 0, *argThead[1] - 1);
  98. cout << "ThreadSort stop" << endl;
  99.  
  100. return 0;
  101. }
  102.  
  103. void Thread_Sort(int* argThead, int Npriority) {
  104.  
  105. HANDLE hThread_mass_sort;
  106. DWORD ThreadIDs;
  107.  
  108. hThread_mass_sort = CreateThread(
  109. NULL,
  110. 0,
  111. ThreadSort,
  112. argThead
  113. ,
  114. CREATE_SUSPENDED,
  115. &ThreadIDs
  116. );
  117.  
  118. if (hThread_mass_sort == NULL) {
  119. cout << "Thread failed" << GetLastError() << endl;
  120. }
  121. SetThreadPriority(hThread_mass_sort, Npriority);//
  122. cout << "PriorytetS hThread_mass_sort = " << GetThreadPriority(hThread_mass_sort) << endl;//
  123. cout << "Thread Creation Success" << endl;
  124. ResumeThread(hThread_mass_sort);//
  125. cout << "ThreadID -->" << ThreadIDs << endl;
  126.  
  127. }
  128.  
  129.  
  130.  
  131.  
  132. int main()
  133. {
  134. int ArrElements = 102;
  135. int* arr = new int[ArrElements];
  136.  
  137. makeARR(arr, ArrElements);
  138. argThead[0] = arr;
  139. argThead[1] = &ArrElements;
  140.  
  141. Thread_Sort(*argThead, 0);
  142.  
  143. Thread_Print(*argThead, 31);
  144. Sleep(1000);
  145. return 0;
  146. }
  147.  
  148.  
  149. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  150. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  151.  
  152. // Советы по началу работы
  153. // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  154. // 2. В окне Team Explorer можно подключиться к системе управления версиями.
  155. // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  156. // 4. В окне "Список ошибок" можно просматривать ошибки.
  157. // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  158. // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement